簡體   English   中英

子目錄中的.htaccess重寫在使用.htaccess的根目錄下不起作用

[英].htaccess rewrite in subdirectory not working under root directory with .htaccess

我的域指向根文件夾。 在此文件夾中,我需要具有.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]
..

我不知道為什么重定向不起作用。 你能幫我嗎? 謝謝

因為如果您的“ sub” htaccess位於Web uri /subfolder ,則不可能通過/image/cscard_valid請求來觸發它。 這些是不同的目錄。 Apache僅掃描url列出的目錄中的htaccess文件,而不會進入“並行”或“鄰居”目錄。

例如,對於URL /foo/bar/baz ,Apache將檢查以下內容:

/foo/.htaccess
/foo/bar/.htaccess
/foo/bar/baz/.htaccess

如果/foo/himom有一個.htaccess文件,則無關緊要。 它不在所請求文件的路徑中,因此永遠不會對其進行掃描。

刪除子文件夾中的.htaccess ,然后將規則添加到根目錄中,如下所示:

RewriteRule ^image/([^/]+)/(\d+)x(\d+)/([^/]+).(jpg|png)$ sub/folder/file.php?action=$1&code=$4&w=$2&h=$3 [B,L,QSA]

很可能您不需要/ sub / folder /中的.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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM