如何重写URL以删除.php扩展名并修改?query = string到/ path / query / string

时间:2019-05-03 20:38:53

标签: apache .htaccess mod-rewrite

我有一个小型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),它可以工作,但不能正确重定向。但是,发布的配置中的扩展删除部分确实可以正常工作。

任何帮助将不胜感激,这些配置比他们寻找的要复杂。

0 个答案:

没有答案