.htaccess 使用查询字符串重写 URL



我已经尝试了大量发布在stackoverflow上的解决方案,但似乎没有任何解决方案对我有用。我想重写我网站上的一些 URL 以方便搜索引擎使用。

我想要这样的网址:-http://www.mysite.com/index.php?filter=accounts显示为:-http://www.mysite.com/accounts

网络上的许多帖子都将其作为解决方案:-

RewriteRule ^([^/]+)/?$ index.php?filter=$1 [QSA,L]

但这无济于事。

我的网站是一个Joomla CMS网站,在.htaccess文件中已经有一些重写。会不会是我把我的新重写规则放在了错误的地方?

这是完整的.htaccess文件,没有添加我的新重写规则

Options +FollowSymLinks
RewriteEngine On
# prevents people from accessing anything with phpMyAdmin
RewriteRule phpMyAdmin - [F]
# force canonical www if request is for non-www or has port number etc
RewriteCond %{HTTP_HOST} !^(www.mysite.com)?$
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode[^(]*([^)]*) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]
RewriteBase /
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/[^.]*|.(php|html?|feed|pdf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

任何帮助将不胜感激。:-)

已更新

现在正在测试中。试试这个:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-=_?]+)/?$ index.php?filter=$1 [L] 

.htaccess位于根目录中。

请求的 URL http://www.mysite.com/accounts/,但可以是任何内容:http://www.mysite.com/apples/

注意:地址栏中显示的 URL 是在该地址栏中输入的 URL。我认为这并不 http://www.mysite.com/index.php?filter=accounts,因为我想重定向的目的是用更友好的重定向(http://www.mysite.com/accounts)替换它,这是必须在地址栏中键入的重定向,而不是相反。有点令人困惑,但我希望这是有道理的。

若要对其进行测试,请在根目录中的索引.php仅包含以下代码。

<?php 
if ($_GET['filter'] == 'accounts') {
echo "This is Accounts<br /><br />";    
}else {
echo "This is INDEX<br /><br />";       
}
?>

至于在.htaccess中放置重写规则的什么位置,我不知道。我想你必须在实际规则之前和之后尝试一下。

最新更新