Apache 如果没有文件,请重写URL

Apache 如果没有文件,请重写URL,apache,.htaccess,url-rewriting,Apache,.htaccess,Url Rewriting,我有两个.htaccess文件需要合并成一个 第一个是一个简单的文件扩展名删除程序 第二个重写所有请求,以转到第三方应用程序,保留我们的URL 我需要的是让规则足够智能,如果文件存在于第一台服务器上,就不会查看第二台服务器 规则1: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php 规则2: Options

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

第一个是一个简单的文件扩展名删除程序

第二个重写所有请求,以转到第三方应用程序,保留我们的URL

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

规则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向导,所以我会全神贯注地听取建议。

您可以添加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

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

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