我有这个 .htaccess 代码,它是我从不同来源组合而成的,我无法为其添加几个额外的选项。
<Limit GET POST PUT>
order deny,allow
deny from all
allow from XXX.XXX.XXX.XXX
</Limit>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
# allow things that are certainly necessary
RewriteCond %{REQUEST_URI} "/css/" [OR]
RewriteCond %{REQUEST_URI} "/js/" [OR]
RewriteCond %{REQUEST_URI} "/images/"
RewriteRule .* - [L]
RewriteRule ^([a-zA-Z0-9-/_]+)/([a-zA-Z0-9-/_%]+)/([a-zA-Z0-9-/_]+)/([a-zA-Z0-9-/_]+)$ index.php?primary=$1&secondary=$2&tertiary=$3&quaternary=$4 [QSA]
RewriteRule ^([a-zA-Z0-9-/_]+)/([a-zA-Z0-9-/_%]+)/([a-zA-Z0-9-/_]+)$ index.php?primary=$1&secondary=$2&tertiary=$3 [QSA]
RewriteRule ^([a-zA-Z0-9-/_]+)/([a-zA-Z0-9-/_%]+)$ index.php?primary=$1&secondary=$2 [QSA]
RewriteRule ^([a-zA-Z0-9-/_]+)$ index.php?primary=$1
首先,我想www.
在 URL 中添加强制使用。当我尝试添加它时,生成的 URL 将成为当前RewriteRule
s 的输出,其中包含GET
变量。我相信这是因为规则在循环中起作用?
我想做的另一件事是捕获任何不符合当前规则标准的内容并将其发送到类似index.php?primary=error
. 它现在的工作方式对我来说几乎是完美的,因为如果存在格式错误的 URL 或非法字符,该站点甚至不会尝试显示该页面。该站点将安全地创建所有 URL,因此任何错误的 URL 都将是在地址栏中进行试验的结果,但是最好有一个错误页面而不是一个未找到的页面。
在此先感谢.. 很抱歉混淆使用RewriteRule
!