我们正在更改我们的域名,这适用于独立应用程序。在Apache虚拟主机文件中,DocumentRoot是/ var / www / website / html,而不是/ var / www / example / html,如下所示:
Alias /apps/dept /var/www/example/html/apps/dept
<Directory "/var/www/example/html/apps/dept/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
我将.htaccess文件放在/ var / www / example / html / apps / dept目录中,如下所示:
RewriteEngine On
RewriteBase /apps/dept/
RewriteCond %{HTTP_HOST} ^example.orgname.state.tx.us/apps/dept [NC]
RewriteRule ^(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [L,R=301]
这似乎遵循此处推荐的内容http://httpd.apache.org/docs/current/mod/mod_rewrite.html和Apache : How to Use Rewrite Engine Inside Alias。我看不出结果。新域在VH文件中也有一个虚拟主机配置。同样的基本重写适用于我们的Drupal网站,该网站不使用别名。使用附加的应用程序路径名重写域名可能需要进行哪些更改? RewriteBase不正确吗?
THX。
答案 0 :(得分:2)
所以你只想重定向/apps/dept/
,对吗?这应该工作。将它放在.htaccess
或example.orgname.state.tx.us
的Apache配置中,所有这些都应按预期工作。
RewriteEngine on
RewriteRule ^/apps/dept/(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [NC,L,R=301]
现在,任何请求都会转到此网址
http://example.orgname.state.tx.us/apps/dept/
现在转到此网址:
http://example.orgname.texas.gov/apps/dept/
并且URL的右侧的任何请求参数也将被传递。
编辑只需重读您在此处写的内容:
我在./ var / www / example / html / apps / dept目录中放了一个.htaccess文件 如下。
我上面描述的.htaccess
应该放在/var/www/example/html/
而不是/apps/dept
子目录中。
但是,如果您想要放置在.htaccess
中/apps/dept
的相同行为,请使用此功能:
RewriteEngine on
RewriteRule ^(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [NC,L,R=301]
这样,/apps/dept
发出的任何请求都将example.orgname.texas.gov/apps/dept/
包括/apps/dept
的子目录,例如/apps/dept/test_app1
,/apps/dept/test_app2
或/apps/dept/test_app3
。
或许试试这个:
RewriteEngine on
RewriteRule (.*)$ http://example.orgname.texas.gov/apps/dept/$1 [NC,L,R=301]
注意我删除了^
,这会强制RewriteRule
与网址的开头相匹配。
答案 1 :(得分:0)
您无法在%{HTTP_HOST}
变量中匹配请求URI,它只匹配域名。将您的规则更改为:
RewriteEngine On
RewriteBase /apps/dept/
RewriteCond %{HTTP_HOST} ^example\.orgname\.state\.tx\.us$ [NC]
RewriteRule ^(.*)$ http://example.orgname.texas.gov/apps/dept/$1 [L,R=301]