我相信这可能是重复的。但是我尽力寻找一种适合我需求的东西,但没有发现。所以这基本上是我到目前为止所拥有的,我将解释我需要修改的内容。
# Forbidden Access
ErrorDocument 403 /403.php
# Not Found
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
</IfModule>
<IfModule mod_rewrite.c>
# Strip off .php extension if it exists
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ /403.php$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
</IfModule>
现在,这似乎可以正常工作。但是它有一个错误。首先让我解释一下。
1)它会自动剥离.php扩展名(如果存在)。如果它是外部请求的URL,则不确定是否剥离.php。忘了检查,但也许您已经知道,所以您可以告诉我?
2)当我键入此...“ http://website.dev/img/ ”时,确实给了我“ 403禁止访问”。这样就很好。
3)当我尝试...“ http://website.dev/index ”时,即使手动添加了.php扩展名,它也会加载页面,它将删除该页面。所以这里的一切都很好...
4)当我尝试像这样的随机路径时,“ http://website.dev/asdasd ”确实会给我一个“ 404 Not Found”。所以我们在这里也很擅长。
但主要问题在这里...
5)当我尝试遵循...“ http://website.dev/dashboard/index ”时,即使没有问题,它也会提示我404 Not Found。它显示在仪表板目录中的所有页面上。
您能帮我修改上面的htaccess吗?我真的很讨厌搜索,而且我一点也不了解正则表达式。
这是因为在您的最后一条规则中使用了错误的正则表达式来静默添加.php
扩展名。将最后一条规则更改为:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI}\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句