【发布时间】:2016-07-30 06:47:16
【问题描述】:
我创建了一个.htaccess 文件,以使用户能够请求没有php 扩展名的页面,并在请求以'.php' 结尾的URL 时强制重定向到自定义错误页面。像这样:
mysite.com/home -> 将提供home.php
mysite.com/home.php -> 将提供自定义 403 禁止
我的问题是当我请求 mysite.com/home.php 时,home.php 被提供,没有任何错误。
这是我的.htaccess 文件:
RewriteEngine On
RewriteBase /
# Exit the rule chain when showing error pages
RewriteRule ^error/403.php$ - [L]
RewriteRule ^error/404.php$ - [L]
# Append '.php' to every request
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]
# Show 404 error page when original request ends with '.php'
RewriteCond %{THE_REQUEST} \.php
RewriteRule \.php/.*$ - [L,R=404]
# Custom error
ErrorDocument 403 /error/403
ErrorDocument 404 /error/404
【问题讨论】:
-
RewriteRule \.php/.*$可能应该只是RewriteRule \.php$,但我猜你最终会得到所有 404ed 的东西,但试试看。 (如果您使用的是 Apache 2.4,请尝试将END放在L中) -
谢谢。将其更改为
RewriteRule \.php$效果很好,需要进行一些修改。
标签: php apache .htaccess redirect mod-rewrite