2011-08-26 123 views
4

我的网站设置了htaccess的从HTML指挥所有页面到PHP如下:htaccess的重定向所有,但一个页面的HTML到PHP

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^website.com 
RewriteRule (.*) http://www.website.com/$1 [R=301,L] 

RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

我试图建立雅虎网站浏览器和验证我帐户我需要添加一个元标记或添加一个HTML文件到我的网站的根文件夹。雅虎拒绝识别我的元标记(我确定我已经正确添加了它)!所以我唯一的选择是添加html文件。

我的html文件不断重定向到php,似乎雅虎找不到它。

有什么我可以添加到我的htaccess文件,以便所有文件重定向到PHP除了雅虎需要看到的一个文件?

回答

7

尝试增加这个条件:

RewriteCond %{REQUEST_FILENAME} !-f 

这应该允许实际存在的任何文件(也有其他类型的文件等选项)。这假定它不会混淆其他已存在文件的其他内容。

+0

感谢LDG做了这份工作!要清楚给任何其他人与这个问题,并不熟悉htaccess我不得不把这行在我的HTML/PHP重定向 –

4

我看到4层主要的方法(你选择哪一个更适合你 - 这取决于你的网站的重写规则逻辑):

1.添加全球排除规则,以防止任何进一步重写对文件操作:

RewriteCond %{HTTP_HOST} ^website.com 
RewriteRule (.*) http://www.website.com/$1 [R=301,L] 

# do not do any rewriting to this file 
RewriteRule somefile\.html$ - [L] 

RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

如果你愿意,你可以指定文件的完整路径是更具体的(有效排除仅1特定的文件,如果有超过1个文件,这样的名字,但在不同的文件夹 - 例如URL应该以无引导斜杠开始):

# do not do any rewriting to this file 
RewriteRule ^full/path/to/somefile\.html$ - [L] 

2.添加全局排除规则,以防止上任何现有的文件或文件夹任何进一步重写操作:

RewriteCond %{HTTP_HOST} ^website.com 
RewriteRule (.*) http://www.website.com/$1 [R=301,L] 

# do not do anything for already existing files 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .+ - [L] 

RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

3.添加排除条件,将拒绝重写这个特殊.html文件到.PHP

RewriteCond %{REQUEST_URI} !somefile\.html$ 
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

如果你愿意,你可以指定文件的完整路径是更具体的(有效排除1只

,将只允许重写的.html到.PHP
RewriteCond %{REQUEST_URI} !^/full/url/path/to/somefile\.html$ 

4.添加排除条件:这样的网址应以斜线开始) - 如果有超过1个文件,这样的名称,但在不同的文件夹中特定文件如果这样的.html文件不存在

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

高于 ALL规则用于放置在.htaccess在网站根目录。如果放置在其他地方可能需要一些小的调整。

+0

尼斯彻底的答案与灵活的选项。这里的数字4与接受的答案相符。 – goodeye

相关问题