2016-07-06 46 views
0
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/board/([a-zA-Z0-9\_\-]*).* /board/index.php?$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/board/user/([a-zA-Z0-9\_\-]*).* /board/user/index.php?$1 [L] 

我想轉發mydomain.com/board/somethingmydomain.com/board/index.php?something/板/用戶/東西/board/user/index.php?something。並且不要重寫現有的文件或目錄。阿帕奇重寫條件不抓住現有的目錄或文件

董事會/一個作品,但即使我要求一個現有的目錄,所以我不能測試第二個火災。像mydomain.com/board/signup/index.php這樣的頁面正在轉發到/board/index.php?signup

這些都在<VirtualHost *:443>內,我的VPS實際上處理同一個不同的域名實例如果這有所作爲。

我在搜索中發現了類似的問題,但他們的解決方案就是我上面已經使用的解決方案。

回答

0

顯然在Apache 2.4(?說不定2.2及以上),你必須做這樣的:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d 

但是,如果你瀏覽到,比方說,mydomain.com/board/當有這種不趕那裏是一個index.php。這就是我最後想到的。

RewriteEngine On 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteCond $1 !index\. 
RewriteCond %{DOCUMENT_ROOT}/board/$1/index.php !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d 
RewriteRule ^/board/([a-zA-Z0-9\_\-\.]*) /board/index.php?$1 [L] 

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f 
RewriteCond $1 !index\. 
RewriteCond %{DOCUMENT_ROOT}/board/user/$1/index.php !-f 
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d 
RewriteRule ^/board/user/([a-zA-Z0-9\_\-\.]*) /board/user/index.php?$1 [L]