.htaccess从domain.org/sub重定向到sub.domain.org/无法正常工作

时间:2013-04-03 20:40:11

标签: .htaccess

我正在尝试将aphdigital.org/GVH/重定向到gvh.aphdigital.org,并将aphdigital.org/GVH/something/重新定向到gvh.aphdigital.org/something/但是我有很多困难。我尝试了this question中的代码,但它没有用。下面注释掉的代码块也显示重定向失败的尝试。我究竟做错了什么?如果我有权访问httpd.conf,我会启用日志记录,但我只有FTP访问权限。我知道apache正在读取此文件,因为语法错误似乎导致500错误。

这是我的.htaccess文件:

# Remember to enable display_errors on development environments only.
<IfModule mod_php5.c>
    php_value display_errors 1
    php_flag register_globals off
</IfModule>

RewriteEngine on

# If know that mod_rewrite is enabled, but you are still getting mod_rewrite errors,
# uncomment the line below and replace "/" with your base directory.
# RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^admin/ - [C]
RewriteRule .* admin/index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php

# Added this on Jan. 4, 2013 to redirect from old URL to new. Doesn't seem to be working. 
RewriteCond %{HTTP_HOST} ^www.aphdigital.org/GVH$
RewriteCond %{HTTP_HOST} ^www\.aphdigital\.org/GVH$
RewriteRule ^gvh/(.*)$ http://gvh.aphdigital.org/$1 [L,QSA,R=301]
# End of Jan. 4 add.

#TEST for redirect added April 3. Also doesn't work. 
# To redirect /mysub/foo to http://mysub.mysite.co.uk/foo
#RewriteCond %{HTTP_HOST} ^(www\.)?(aphdigital\.org)$ [NC]
#RewriteRule ^(gvh)/?(.*)$ http://$1.%2/$2 [R=301,L,NC] 

#TEST2, code from Stackoverflow question 
#Options +FollowSymLinks -MultiViews
#RewriteEngine on
#RewriteBase /

# To redirect http:://www.mysite.co.uk/ to http:://mysite.co.uk/
#RewriteCond %{HTTP_HOST} ^www\.(aphdigital\.org)$ [NC]
#RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

# To redirect /mysub/foo to http://mysub.mysite.co.uk/foo
#RewriteCond %{HTTP_HOST} ^(www\.)?(aphdigital\.org)$ [NC]
#RewriteRule ^(gvh)/?(.*)$ http://$1.%2/$2 [R=301,L,NC] 
#END TEST 2

#Intentionally breaking to see if reading .htaccess. Yep, this breaks it. 
#<directory / ></directory> 

<FilesMatch "\.(php|ini)$">
 Order Allow,Deny
 Deny from all
</FilesMatch>

<Files index.php>
Allow from all
</Files>

# Uncomment the lines below in order to enable caching of some files via Apache (after a finished site has gone live)
<IfModule mod_expires.c>
#  <FilesMatch "\.(js|ico|gif|jpg|png|css)$">
#       ExpiresActive on
#       ExpiresDefault "access plus 10 day"
#   </FilesMatch>
</IfModule>

这适用于运行Omeka CMS的网站。

1 个答案:

答案 0 :(得分:1)

网址路径GVH不属于%{HTTP_HOST},因此应为

RewriteCond %{HTTP_HOST} ^(?:www\.)?aphdigital\.org$
RewriteRule ^gvh/(.*)$ http://gvh.aphdigital.org/$1 [R,L,NC]

永远不要在启用301的情况下进行测试,请参阅此回答Tips for debugging .htaccess rewrite rules了解详细信息。