.htaccess文件:
我有以下htaccess文件(非常短):
RewriteEngine on
Options +FollowSymLinks
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_]+)/?$ index.php?page=$1 [L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_]+)/(.+)/?$ index.php?page=$1¶ms=$2 [L]
我认为它很容易理解:如果一个文件不存在,那么url将被重新写入。
问题:
“错误”文件夹或文件不存在,因此应该重新编写。但是,当我尝试访问url.local/error/404
时,不起作用,但url.local/error
起作用。
也许是阿帕奇的问题?
编辑:
摘要:
http://url.local/dir
工程http://url.local/dir/subdir
工程http://url.local/dir/subdir/subdir
工程http://url.local/error
工程http://url.local/error/subdir
不工作发布于 2016-08-03 22:11:49
也许是阿帕奇的问题?
不,没有Apache问题。问题是您的正则表达式不匹配/
,但是您的输入有一个。
以这种方式:
RewriteEngine on
Options +FollowSymLinks
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^(\w+)/(.+)/?$ index.php?page=$1¶ms=$2 [L]
RewriteRule ^(.+?)/?$ index.php?page=$1 [L,QSA]
https://stackoverflow.com/questions/38754350
复制相似问题