我的域指向根文件夹。在这个文件夹中,我需要有.htaccess,它将重定向到子文件夹。
在根文件夹中我有这个.htaccess:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/sub/folder/
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.
RewriteRule ^(.*) /sub/folder/$1 [L]
在sub / folder / .htaccess中我有以下几行:
RewriteEngine on
RewriteBase /
ErrorDocument 404 /index.php?action=404
RewriteCond %{REQUEST_URI} ^/image/([^/]+)/(\d+)x(\d+)/([^/]+).(jpg|png)$
RewriteRule (.*) file.php?action=%1&code=%4&w=%2&h=%3 [B,L,QSA]
RewriteCond %{REQUEST_URI} ^/cscard_valid$
RewriteRule (.*) index.php?action=cscardvalid&ajax=true [L,QSA]
..
我不知道为什么重定向不起作用。你能帮我吗? 感谢
答案 0 :(得分:1)
因为如果您的“子”htaccess位于网络uri /subfolder
中,那么/image
或/cscard_valid
的请求就无法触发它。这些是不同的目录。 Apache只扫描列出url的目录中的htaccess文件,不会进入“并行”或“邻居”目录。
/foo/bar/baz
,Apache将检查以下内容:
/foo/.htaccess
/foo/bar/.htaccess
/foo/bar/baz/.htaccess
如果/foo/himom
中有.htaccess文件,那就无关紧要了。它不在所请求文件的路径中,因此永远不会被扫描。
答案 1 :(得分:1)
删除子文件夹中的.htaccess
,然后将规则添加到您的根目录,如下所示:
RewriteRule ^image/([^/]+)/(\d+)x(\d+)/([^/]+).(jpg|png)$ sub/folder/file.php?action=$1&code=$4&w=$2&h=$3 [B,L,QSA]
答案 2 :(得分:0)
很可能你不需要/ sub / folder /中的.htaccess,只需要root中的.htaccess。它的内容应该如下:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^/image/([^/]+)/(\d+)x(\d+)/([^/]+).(jpg|png)$
RewriteRule (.*) sub/folder/file.php?action=$1&code=$4&w=$2&h=$3 [B,L,QSA]
RewriteCond %{REQUEST_URI} ^/cscard_valid$
RewriteRule (.*) sub/folder/index.php?action=cscardvalid&ajax=true [L,QSA]
RewriteRule ^(.*) sub/folder/$1 [L]