这是我的.htaccess文件
## Turn on RewriteEngine
RewriteEngine on
Options +FollowSymlinks
## Ignore
RewriteRule (slir) - [L,NC]
RewriteRule ^slir - [L,NC]
## CakePHP
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
这曾经在我的旧主机上正常工作,但自从转移到HostGator后,#ignore下的两条规则已停止工作。只有两个因为我正在尝试不同的事情。
基本上所有请求都会发送到app / webroot,但我有一个名为“slir”的文件夹,我希望将其排除在此之外。
后两条规则如何运作但前两条规则已停止工作?
感谢。
答案 0 :(得分:0)
您可以使用重写标记skip。如果我们找到匹配项,则跳过以下重写规则:
RewriteEngine on
Options +FollowSymlinks
# If we have a match for slir anywhere in the REQUEST_URI
# (case insensitive based on NC in supplied code)
RewriteCond %{REQUEST_URI} [sS][Ll][Ii][Rr]
# then skip 1 rule.
RewriteRule .? - [S=1]
#Match 0 or any character + and rewrite the URL.
RewriteRule ^(.*)$ app/webroot/$1 [L]
答案 1 :(得分:0)
你可以试试这个:
RewriteEngine on
RewriteBase /
Options +FollowSymlinks
# Send all requests that do not start with `/slir` to the webroot.
RewriteCond %{REQUEST_URI} !^/slir
RewriteRule ^(.*)$ app/webroot/$1 [L]
答案 2 :(得分:0)
最后是因为/ slir /中的htaccess文件有这个:
# Prevent other scripts from interfering with SLIR
php_value auto_prepend_file none
php_value auto_append_file none
评论两行后,问题就消失了