【问题标题】:Redirect 301 Not Working properly codeigniter重定向 301 无法正常工作
【发布时间】:2014-02-11 06:16:57
【问题描述】:

我有两个地方的链接。

链接 1:http://www.myhappyjourney.com/Rae%20Bareli 链接2:http://www.myhappyjourney.com/Rae-Bareli

我想将链接 1 永久重定向到链接 2。所有带有空格的网址都带有连字符。

尝试了以下代码。但不工作。它将 index.php 放在 url 中。

RewriteCond %{THE_REQUEST} (\s|%20)
RewriteRule ^([^\s%20]+)(?:\s|%20)+([^\s%20]+)((?:\s|%20)+.*)$ $1-$2$3 [N,DPI]
RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1-$2 [L,R=301,DPI]

注意:项目在 codeigniter 中。

完整的 .ht 访问代码

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

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

RewriteCond %{THE_REQUEST} (\s|%20)
RewriteRule ^([^\s%20]+)(?:\s|%20)+([^\s%20]+)((?:\s|%20)+.*)$ $1-$2$3 [N,DPI]
RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1-$2 [L,R=301,DPI]

【问题讨论】:

    标签: php .htaccess redirect


    【解决方案1】:

    您可以将此规则用于空格以连字符重定向:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule "^(\S*)\s+(\S*\s.*)$" $1-$2 [N]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule "^(\S*)\s(\S*)$" /$1-$2 [L,R=301]
    
    RewriteCond %{HTTP_HOST} !^(.*)\.myhappyjourney\.com$ [NC] 
    RewriteRule ^(.*)$ http://www.myhappyjourney.com/$1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$0 [PT,L]
    

    【讨论】:

    • 它正在工作。但它将 index.php 放在 url 中。这也是之前代码的问题。
    • 面临一个问题。它也正在替换图像网址。例如Rae Bareli.jpg 到 Rae-Bareli.jpg(我不想要)。有什么解决办法吗?
    猜你喜欢
    • 2015-08-09
    • 2018-05-18
    • 2016-03-15
    • 2013-11-04
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多