我正在使用以下.htaccess代码
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-_]+)$ topics.php?cat=$1
RewriteRule ^([a-zA-Z0-9-_]+)/$ topics.php?cat=$1
RewriteRule ^([^/]*)/([^/]*)$ /topics.php?cat=$1&bsid=$2
RewriteRule ^([^/]*)/([^/]*)/$ /topics.php?cat=$1&bsid=$2
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php
我有一个名为images的文件夹或目录,下面有文件但是在使用这个htacces代码时,当我直接转到像http://appricart.com/images/ajax-loading.gif这样的空页时,图像目录中的文件被检索到。 关于这个..Tnxx的帮助
答案 0 :(得分:0)
这是一个可怕的解决方案,我建议你不要在.htaccess上设置单独的重定向,但我认为这就是你要求的。在重写之前,您必须检查文件是否存在。
RewriteRule ^([a-zA-Z0-9-_]+)/?$ topics.php?cat=$1
RewriteCond %{REQUEST_URI} ^([^/]*)/([^/]*)/?$
RewriteCond %{DOCUMENT_ROOT}/images/%2 !-f
RewriteRule ^ /topics.php?cat=%1&bsid=%2 [L]
尝试将整个重写代码替换为此代码。我已经用两个部分重写了一些冗余的东西。
要获得更清晰的解决方案,请查看url routing。
编辑:尝试anunbhava的代码,我认为它应该有效。
答案 1 :(得分:0)
您应该从此重写代码中跳过文件/目录。
使用此代码:
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php
RewriteEngine On
RewriteBase /
# skip file and directories
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([\w-]+)/?$ topics.php?cat=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ topics.php?cat=$1&bsid=$2 [L,QSA]