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

.htaccess使用查询字符串重写URL,.htaccess,url,mod-rewrite,rewrite,.htaccess,Url,Mod Rewrite,Rewrite,我在stackoverflow上尝试了大量的解决方案,但似乎什么都不适合我。我想在我的网站上重写几个网址,使之对搜索引擎友好 我想要这样的URL:- 显示为:- 网络上的许多帖子都将此作为解决方案:- RewriteRule ^([^/]+)/?$ index.php?filter=$1 [QSA,L] 但这没什么用 我的网站是Joomla CMS网站,在.htaccess文件中已经有一些重写。是不是我把我的新规则放错地方了 这是未添加新重写规则的完整.htaccess文件 Options

我在stackoverflow上尝试了大量的解决方案,但似乎什么都不适合我。我想在我的网站上重写几个网址,使之对搜索引擎友好

我想要这样的URL:- 显示为:-

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

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]
Options+FollowSymLinks
重新启动发动机
#阻止用户使用phpMyAdmin访问任何内容
重写规则phpMyAdmin-[F]
#如果请求为非www或具有端口号等,则强制规范www
重写cond%{HTTP_HOST}^(www.mysite\.com)$
重写规则(.*)http://www.mysite.com/$1[R=301,L]
重写cond%{QUERY\u STRING}mosConfig\[a-zA-Z\]{1,21}(\\%3D)[或]
RewriteCond%{QUERY\u STRING}base64\u encode[^(]*\([^)]*\)[或]
重写cond%{QUERY_STRING}(|%3E)[NC,或]
重写条件%{QUERY\u STRING}全局(|\[|\%[0-9A-Z]{0,2})[或]
重写条件%{QUERY\u STRING}\u请求(|\[|\%[0-9A-Z]{0,2})
重写规则。*index.php[F]
重写基/
重写规则。*-[E=HTTP\U授权:%{HTTP:AUTHORIZATION}]
重写cond%{REQUEST_URI}!^/index\.php
RewriteCond%{REQUEST_URI}(/[^.]*|\(php | html?| feed | pdf | raw))$[NC]
重写cond%{REQUEST_FILENAME}!-f
重写cond%{REQUEST_FILENAME}!-d
重写规则。*index.php[L]
任何帮助都将不胜感激。
:-)

更新

现在已测试。请尝试以下操作:

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

<?php 

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

?>
请求的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),这是必须在地址栏中键入的,而不是相反。有点混乱,但我希望它有意义

为了测试它,在根目录的index.php中只包含以下代码

<?php 

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

?>


至于将重写规则放在.htaccess中的位置,我不知道。我想您必须在实际规则之前和之后进行尝试。

您好,谢谢您的回复。不幸的是,它没有任何作用。查询字符串可能是多个选项之一,并不总是“accounts”,尽管如果我在那里找到一个解决方案来处理单个查询不是很多,我不能为每一个添加一行。好吧,我将尝试并测试一个类似的解决方案。我确信有一个。重要的是.htaccess文件位于根目录中:public\u html在本例中为.Hi。该.htaccess位于public\u html中,我刚刚清除了缓存,以确保没有缓存问题使其停止工作ng.Hi Felipe。我真的很感谢你努力帮助我,但我仍然无法实现这一点。我想知道你的建议是否与需要发生的相反。我需要请求的URL,以便我可以在PHP中使用查询字符串,但我希望浏览器地址栏中显示的URL能够被读取,或者如果我需要的话不可能是或等等。再次谢谢。谢谢菲利佩。最后到了。非常感谢你的帮助。