我正在设置我认为使用htaccess的一组相当简单的重定向规则。
我已经设置了重定向,以便根域转到英国子目录。例如:
http://example.com
转到:
http://example.com/uk
我现在正在尝试同样的事情,但这次是针对个别的html文件。见下文:
http://example.com/index.html
http://example.com/main.html
这些应该发给他们的英国同行:
http://example.com/uk/
http://example.com/uk/main.html
我有index.html工作和重定向很好但在main.html上做类似的事情是引入一个重定向循环,我找不到原因。对于main.html重定向,我从插入符号(^)开始,因此只有在main.html直接跟随域时才匹配。
这是我的.htaccess文件:
php_value memory_limit 256M
## apc interferes with the autoloader
php_flag apc.cache_by_default Off
Options +FollowSymLinks
#Turn on the RewriteEngine
RewriteEngine On
RewriteBase /
RewriteRule ^index.html /uk/ [R=302,NC,L]
RedirectMatch 301 ^/$ /uk/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /([^/]+)/?$ [NC]
RewriteRule ^main.html /uk/main.html [R=301,QSA,L]
RewriteRule (.*)\.html index.php?key=$1 [QSA,L]
AddType video/mp4 .mp4 .m4v
AddType video/ogg .ogv
AddType video/webm .webm
我尝试了很多没有运气的组合。任何人都可以帮助我吗?
答案 0 :(得分:0)
对于使用正则表达式替换的实际情况,您实际上只需要root .htaccess中的一个规则:
AddType video/mp4 .mp4 .m4v
AddType video/ogg .ogv
AddType video/webm .webm
RewriteEngine On
RewriteRule ^((?:index|main)\.html)?$ /uk/$1 [R=302,NC,L]
清除浏览器缓存后进行测试。