簡體   English   中英

將舊網址重寫為漂亮的網址,並使用.htaccess將舊網址重定向到新網址

[英]Rewriting old urls to pretty urls, and redirect old urls to new with .htaccess

我在.htaccess設置方面遇到了一些問題。 我的網站主頁網址為: http//www.domain.com/b/en/index.php ,我使用mod_rewrite創建漂亮的網址: http//www.domain.com/en

這是我對漂亮網址的重寫規則(可行):

RewriteRule ^en/(.*)$ /b/$1 [L,QSA,NC,PT]

這就是我想要的東西,但是當我將“舊網址”重定向到新網址時,存在一些問題。

我的Chrome瀏覽器顯示“ www.domain.com redirected you too many times.

這是我的舊網址重定向到新規則:

RewriteRule ^b/en/(.*)$ /en/$1 [NC,L,R=301]

這是一個通用的兩部分問題。 您需要將原始請求重定向到更漂亮的請求:

RewriteRule ^en/(.*)$ /b/en/$1 [L,QSA,NC]

RewriteCond %{THE_REQUEST} ^GET\ /b/(en)/(\S*) [NC]
RewriteRule ^b/ /%1/%2 [R=301,L]

在測試新規則之前,請務必清除瀏覽器的緩存。

我有一個更通用的用例,我不得不修改@ hjpotter92的解決方案。

舊的URL結構: http://example.com/index.php?page=foohttp://example.com/index.php?page=foo
新的網址結構: http://example.com/foohttp://example.com/foo

因此,我希望將URL設置為“漂亮”(即SEO友好),但也要將舊(丑陋)URL重定向到新URL,以便舊書簽仍可使用。

這是我的解決方案:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/?(.*)$ /index.php?page=$1 [L,QSA,NC]

RewriteCond %{THE_REQUEST} ^GET\ \/?index\.php\?page=(\S*) [NC]
RewriteRule ^index.php /%1? [R=301,L]

暫無
暫無

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

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