在我的.htaccess APACHE文件中,我有以下代码:
#MY AWESOME WEBSITE
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^myawesomewebsite.com
RewriteRule ^(.*) http://coolwebsite.com/web/this-is-a-friendly-url-version-of-my-awesome-website [P]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^www.myawesomewebsite.com
RewriteRule ^(.*) http://coolwebsite.com/web/this-is-a-friendly-url-version-of-my-awesome-website [P]
myawesomewebsite.com
和coolwebsite.com
都在我的托管中正确关联,myawesomewebsite.com
是alias
。
该代码工作正常。但是,如果我去:
myawesomewebsite.com/index.php
myawesomewebsite.com/wtf.php
myawesomewebsite.com/blahblahblah
myawesomewebsite.com/whateveryouwrite
在所有情况下,您都会看到coolwebsite.com/index.php
的内容。
我想要redir:.*myawesomewebsite.com.*
到http://coolwebsite.com/web/this-is-a-friendly-url-version-of-my-awesome-website
我怎样才能做到这一点? 感谢阅读,请原谅我的英语不好。
答案 0 :(得分:1)
您正在使用[P]
标志,该标志用于代理,而不是您想要的。仅使用以下内容替换所有规则:
RewriteCond %{HTTP_HOST} ^(?:www\.)?myawesomewebsite\.com$
RewriteRule ^ http://coolwebsite.com/web/this-is-a-friendly-url-version-of-my-awesome-website [R=301,L]
如果文件不存在,我将条件仅重定向,因为你没有说你希望它以这种方式工作。
如果我误解了你想要实现的目标,请告诉我。
<强>更新强>
请改为尝试:
RewriteCond %{HTTP_HOST} (?:^|\.)myawesomewebsite\.com$
RewriteCond %{REQUEST_URI} !=/web/this-is-a-friendly-url-version-of-my-awesome-website
RewriteCond %{REQUEST_URI} !=/web.php
RewriteCond %{REQUEST_URI} !^/images/
RewriteRule ^ /web/this-is-a-friendly-url-version-of-my-awesome-website [L]