需要mod_rewrite条件和规则在1个虚拟主机上将“.com”替换为“.org”

时间:2011-08-10 15:32:37

标签: mod-rewrite

我有一系列mod_rewrite指令(如下面的代码1所示),它通过自定义PHP应用程序运行每个服务器请求。

代码1

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]

在我进入mod_rewrites的最后一步之前,我需要将对mydomain.com的任何请求更改为mydomain.org。下面的代码2显示了我的想法,但它不起作用。该请求给了我500内部服务器错误。

代码2

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain\.com$
RewriteRule ^ http://mydomain.org%{REQUEST_URI}
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]

有人可以提出建议吗?感谢

2 个答案:

答案 0 :(得分:1)

我认为您的网站可以通过两个域访问,但您希望所有对您网站的请求都重定向到其中一个域。然后正确的代码是:

RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]

您应该将该代码直接放在重定向行之后。

如果没有给出主机,第二行确保没有重定向(在这种情况下防止重定向循环)。

第三行中的[R = permanent,L]使其成为永久重定向并阻止任何进一步的规则处理。一旦重定向发生,其他规则将被处理。


完整的文件将是:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]

答案 1 :(得分:0)

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://mydomain.org/$1 [R=permanent,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/core.php [L,NC,QSA]