我有一个小型PHP网站。我有两个页面包含要转换为path / based / URL的单参数查询字符串。
最重要的是,我不想看到.php出现在任何地方。我尝试了许多不同规则的组合,但是它们似乎破坏或撤销了先前的规则。我发现了一个使我非常接近的例子。这是我到目前为止从here中摘录的内容:
Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_END} !^1$
RewriteRule ^([A-Za-z-_]+)\.php$ $1/%{QUERY_STRING} [R=301,L]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule . - [L]
RewriteRule ^([A-Za-z-_]+)/([A-Za-z-_]+)/?$ $1.php?item=$2 [E=END:1,L]
RewriteRule ^([A-Za-z-_]+)/?$ $1.php [E=END:1,L]
RewriteRule ^$ index.php [E=END:1,L]
第一个规则:
RewriteRule ^([A-Za-z-_]+)\.php$ $1/%{QUERY_STRING} [R=301,L]
导致我的网址将查询字符串加倍来自: article.php?item =商品名称到/ article / item = article-name?item =商品名称
如果我手动输入预期的重写URL(/ article / article-name),它可以工作,但不能正确重定向。但是,发布的配置中的扩展删除部分确实可以正常工作。
任何帮助将不胜感激,这些配置比他们寻找的要复杂。