2015-08-25 121 views
1

我在使用.htaccess文件中的mod_rewrite重定向到另一个域时遇到了问题。mod_rewrite:确切的URL不匹配,但匹配不确切

这是我有:

RewriteCond %{HTTP_HOST} ^www.somedomain.com/events_detail/an-event [NC] 
RewriteRule ^(.*)$ http://otherdomain.com/directory/8559 [L,R=301,NC] 

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

出于某种原因www.somedomain.com/events_detail/an-event我重定向到http://otherdomain.com/directory而不是http://otherdomain.com/directory/8559

当测试了我的一个测试的.htaccess,它表明,它不匹配第一个条件,但匹配第二个。我试图删除L选项,取消前进^没有成功。

谢谢

+0

使用%{REQUEST_URI}匹配url中的路径名。 – starkeen

回答

1
RewriteCond %{HTTP_HOST} ^www.somedomain.com$ [NC] 
RewriteCond %{THE_REQUEST} /an-Event [NC] 
RewriteRule ^(.*)$ http://otherdomain.com/directory/8559 [L,R=301,NC] 

RewriteCond %{HTTP_HOST} ^www.somedomain.com$ [NC] 
RewriteRule ^(.*)$ http://otherdomain.com/directory [L,R=301,NC] 
+0

谢谢,这工作。我不明白'HTTP_HOST'只是主机名,我需要额外的请求条件。然而'THE_REQUEST'和'REQUEST_URI'之间有什么区别(两者都适合我) – Anthon95

0

据我所看到的,HTTP_HOST仅包含主机名(例如www.somedomain.com),而不是完整的URL。您是否尝试过使用REQUEST_URISCRIPT_FILENAME而不是?