这让我疯了。任何帮助表示赞赏!
我的网站有一堆格式的动态条目:
http://example.com/foo?item-1
http://example.com/foo?item-2
等
注意到?后面没有等号/参数,只是上面的一个字符串。
我想清理网址,以便我们进入:
http://example.com/foo/item-1
所以基本上,我只想删除foo页面的那个讨厌的问号,并用斜杠替换它。我以前没见过有人解决这个案子。我试过以下但没有成功:
RewriteRule ^foo/([^/]*)\$ /foo?$1 [L]
已经有两个其他规则正在使用(两者都有效)。这些从URL的末尾和开始的http中删除php,如下所示。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule (.*) http://example.com/$1 [R=301,L]
提前再次感谢。
答案 0 :(得分:0)
你的正则表达式有问题。 \
符号前面的$
表示您确实希望在那里匹配一个美元符号。尝试不使用\
。
此外,您可能需要在PHP规则之前但在重定向之后。在内部重写之前,您需要外部重定向:
RewriteCond %{HTTP_HOST} ^www.example.com
RewriteRule (.*) http://example.com/$1 [R=301,L]
RewriteRule ^foo/([^/]*)$ /foo?$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]