如何条件写入路径基于httaccess重写特定的PHP文件

问题描述:

我的要求是,当一个请求来到{{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] 

假设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

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

这可以用下面的规则来实现:

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

我没有看到RewriteBase这里的需要。

你可以得到它与以下行来完成:

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] 

希望你能理解并得到了解决。