.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.local/error/404
时,url.local/error
无效。
Apache可能有问题吗?
修改
要点:
http://url.local/dir
正常工作http://url.local/dir/subdir
正常工作http://url.local/dir/subdir/subdir
正常工作http://url.local/error
正常工作http://url.local/error/subdir
没有效果 答案 0 :(得分:1)
Apache可能有问题吗?
没有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]