如果没有文件,则重写URL

时间:2010-01-22 16:54:43

标签: apache .htaccess url-rewriting

我有两个.htaccess文件需要合并为一个。

第一个执行简单的文件扩展名移除。

第二个重写所有要转到第三方应用的请求,保留我们的网址。

我需要的是让规则足够聪明,如果文件存在于第一台服务器上,则不要查看第二台服务器。

规则1:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

规则2:

Options +FollowSymLinks +Indexes
RewriteEngine on
RewriteRule ^(.*)$ http://third.party.com/$1 [P]
# RewriteCond %{THE_REQUEST}([^?\ ]+) 
# RewriteRule ^.*$ index.php/%1

我远离.htaccess向导,所以我很乐意接受建议。

2 个答案:

答案 0 :(得分:0)

您可以添加L标志以停止在给定规则下重写。例如:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

RewriteRule ^(.*)$ http://third.party.com/$1 [P]
# RewriteCond %{THE_REQUEST}([^?\ ]+) 
# RewriteRule ^.*$ index.php/%1

请参阅the mod_rewrite docs(搜索“停止重写过程”)。

答案 1 :(得分:0)

那么您希望一个规则适用于一个站点而另一个规则适用于另一个站点吗?如果是,您可以使用RewriteCond%{HTTP_HOST}指令来限制其范围。