簡體   English   中英

.htaccess SEF重寫URL中帶有句點(點)的問題

[英].htaccess SEF rewrite issue with periods (dot) in URL

以下重寫規則集可以正常工作,直到URL中存在句點為止(如果出現點,則顯示404 not found錯誤),則表明存在問題。 刪除該點將使代碼SEF url起作用,但是在這種情況下,數據庫中沒有匹配項。 我看到了許多解決方案,但無法解決,非常感謝您的幫助。 謝謝! :)

RewriteRule ^([^/.]+)$ index.php?p1=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)$ index.php?p1=$1&p2=$2 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)$ index.php?p1=$1&p2=$2&p3=$3 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)$ index.php?p1=$1&p2=$2&p3=$3&p4=$4 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)$ index.php?p1=$1&p2=$2&p3=$3&p4=$4&p5=$5 [L]

以下是URL的示例,原始的和SEF重寫后的:

的index.php?LANG = EN&CO =佛羅里達和CT =邁阿密&ST =有限%系統200p%20City%20Blvd%20nr%20801&郵編= 10475

作品:/ en / Florida / Miami_Beach / Euclid_Ave_801 / zip-33139

DOESNT:/en/New_York/Bronx/Co._Op._City_Blvd_nr._801/zip-10475

*只要網址中有點,當逗號,分號或其他字符沒有問題時,它將不起作用

您還可以使用PHP處理網址,如下所示:

在.htaccess中:

RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php?$1 [L]

在index.php中:

$uri = explode('/', $_SERVER['QUERY_STRING']);

然后瀏覽$ uri數組或將其更改為多個變量,則不必修改整個腳本:

foreach( $uri as $k => $v ){

    $_GET['p'.$k+1] = $v;
}

顯然,這與引起該問題的另一條規則有關。 Bob0t的回答啟發,這是我們解決問題的方法:

這是問題的一部分:

# require www prefix for all urls of ANY domain & for parked domains by Yatko.com
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.               [NC]
RewriteCond %{HTTP_HOST} ^([^.]+\.[a-z]{2,6})$ [NC]
RewriteRule ^(.*)$       http://www.%1/$1      [R=301,L]

更改為:

# require www prefix for all urls of ANY domain & for parked domains by Yatko.com
RewriteCond %{HTTP_HOST} !^www\.               [NC]
#RewriteCond %{HTTP_HOST} ^([^.]+\.[a-z]{2,6})$ [NC]
RewriteRule ^(.*)$       http://www.%1/$1      [R=301,L]
RewriteRule ^(.+)/$ http://www.yatko.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)\.(.*)$ $1|$2

和PHP代碼中的一些更改:

foreach($_req as $rk => $rv){
        $_req[$rk] = str_replace("|", ".", $rv);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM