Modrewrite中的通配符htaccess APACHE重定向

时间:2017-06-17 01:08:49

标签: apache .htaccess redirect mod-rewrite

在我的.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.comcoolwebsite.com都在我的托管中正确关联,myawesomewebsite.comalias

该代码工作正常。但是,如果我去:

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

我怎样才能做到这一点? 感谢阅读,请原谅我的英语不好。

1 个答案:

答案 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]