0

我一直在尝试从我的网站中删除 .php。我希望它看起来像 example.com/about 而不是 example.com/about.php。我有它,如果它会重写它,所以我可以将它输入为 example.com/about,但我希望它是当我点击我网站上的链接转到 example.com/about 时它会加载 url 作为示例.com/about 而不是 example.com/about.php。总的来说,我希望这样每当有人在我的页面上加载任何内容时,url 的末尾都没有 .php。我的 .htaccess 现在看起来像这样,

RewriteEngine on

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php

谢谢你。

4

2 回答 2

0

尝试这个:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

您不必更改站点的结构,因为它只是针对“http://x.com/page”形式的“格式错误”URI,最后没有扩展名。希望我有所帮助!

于 2012-09-15T17:23:37.350 回答
0

但我希望它是当我单击我网站上的链接转到 example.com/about 时,它将 URL 加载为 example.com/about 而不是 example.com/about.php

要解决此问题,您需要将站点中的链接从 更改example.com/about.phpexample.com/about. 当“野外”链接仍然指向.phpURL 时,您仍然可以进行重定向,但除非您更改站点上的链接以删除扩展名,否则您会导致每个页面加载两次访问您的服务器。

至于重定向:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.php[\?\ ]
RewriteRule ^ /%1/ [L,R=301]

我不确定您将 php 扩展名放回原处的规则是否有效,因为您正在匹配尾部斜杠但是当您使用 . 检查文件时-f,您的文件名中会有一个杂散的尾部斜杠:例如/some/path/to/the_file/.php,而不是/some/path/to/the_file.php

尝试:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+?)/?
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^ /%1.php [L]
于 2012-09-16T00:12:52.250 回答