我该如何修复这个重写URL规则?

时间:2009-10-23 03:24:24

标签: .htaccess mod-rewrite

基本上需要转换

是否使用www,example.com.cn/ [anycharacter]

进入

是否带有www,例如:/ cgi-bin / new-disk.cgi / dir / smooth / [anycharacter]

additinoally ...

我想将所有 www.example.com 重定向到 example.com

2 个答案:

答案 0 :(得分:2)

这应该适合你:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !cgi-bin/new-disk.cgi/dir/smooth
RewriteRule ^(.*)$ /cgi-bin/new-disk.cgi/dir/smooth/$1 [L]

对于前两行,它会检查您的网址中是否有www。如果是这样,请将其退回到非www版本。

请注意最后一行的感叹号(!)。这是一个非操作符,在此测试中,检查您当前请求的文件是否是您的最终重写文件,在这种情况下:

cgi-bin/new-disk.cgi/dir/smooth

如果这是真的,请将其分流到最后一行中指出的实际重写脚本。

字符 $ 1 ,引用同一行上第一组括号标记的第一个捕获组。

答案 1 :(得分:0)

对于你的部分答案,我相信你可以用这个作为基础的例子..希望你使用测试域:

RewriteCond %{HTTP_HOST}   ^www\.example\.com [NC]
RewriteRule ^/(.*)         http://example.com/$1 [L,R=301]

可能需要添加(.*)并使其成为另一部分的可选项。