2016-12-03 119 views
0

我的要求是,當一個請求來到{{host}}/t1/batch那個時候應該從其他batch.php的任何請求應的index.php讀讀。我的基地目錄是t1。我正在做一些htaccess的實驗。我錯過了正確的正則表達式。如何條件寫入路徑基於httaccess重寫特定的PHP文件

RewriteBase /t1 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(batch|index)/?$ $1.php [L,NC] 

回答

0

假設t1是你的文檔根目錄的子目錄,在/t1/.htaccess把這個:

RewriteEngine on 
RewriteBase /t1/ 
# no rewrites for real files and directories 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [NS,L] 
# batch 
RewriteRule ^batch(?=$|/) $0.php [NS,L] 
# everything else 
RewriteRule ^(?!index\.php$). index.php [NS,L] 

如果您有/.htaccess任何重寫,還有,你將需要忽略t1子目錄該文件的規則是這樣的:

RewriteRule ^t1(?:$|/) - [L] 
+0

它工作的很完美。謝謝。 –

0

這可以用下面的規則來實現:

RewriteCond %{REQUEST_URI} ^/t1/batch/$ 
RewriteRule ^.*$ %{DOCUMENT_ROOT}/batch.php [L,NC,END] 
RewriteRule ^.*$ %{DOCUMENT_ROOT}/index.php 

我沒有看到RewriteBase這裏的需要。

0

你可以得到它與以下行來完成:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/t1/batch/?$ 
RewriteRule ^(.*)$ batch.php [L,NC] 

如果你有batch.phpt1目錄和路徑類似http://{host}/t1/batch.php,你需要添加RewriteBase行:

RewriteBase /t1 

如果你不會加RewriteBase行,你必須遵循的絕對路徑,如:

RewriteRule ^.*$ /t1/batch.php [L,NC] 

希望你能理解並得到了解決。