我有一个重写规则,如下所示:
RewriteRule ^([a-zA-Z0-9\-]+)\/([a-zA-Z0-9\-]+)/?$ /index.php?name=$1&artname=$2
当我尝试访问存在的目录结构时,如:/pics/vikings
,浏览器URL将重写为/pics/vikings/?name=pics&artname=vikings
。但是只有在我没有将最后/
包含在网址中时才会发生这种情况。因此/pics/vikings/
不会公开真实的网址。
我尝试为现有目录添加规则,例如:
RewriteRule ^pics\/vikings/?$ /index.php
我也尝试按Rewriting url with htaccess when a directory exists
中的建议添加DirectorySlash Off
编辑:
我的.htaccess文件:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9\-]+)\/([a-zA-Z0-9\-]+)/?$ /index.php?name=$1&artname=$2
Options All -Indexes
ErrorDocument 403 /
ErrorDocument 404 /
ErrorDocument 405 /
ErrorDocument 500 /
答案 0 :(得分:1)
您需要在.htaccess代码中添加以下行
Options -Indexes
答案 1 :(得分:1)
如果是目录,则需要将其排除 为了安全起见,如果它是现有文件(可选),也要排除。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9\-]+)\/([a-zA-Z0-9\-]+)/?$ /index.php?name=$1&artname=$2