簡體   English   中英

如何將多個URL重定向到主頁的單個URL?

[英]How can I redirect multiple URLs to a single URL for the homepage?

我有一個基於codeigniter的網站,但遇到了一個小問題。 基本上,可以通過3個不同的URL訪問主頁,即:

www.domain.com/en

www.domain.com/en/

www.domain.com/en/home.html

我希望第一個和第三個URL重定向到第二個(www.domain.com/en/)。

我已經使用.htaccess玩了好幾個小時,而且似乎無法完成任何更改。

任何幫助將非常感激。

編輯:這是我當前的.htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]

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

RewriteRule ^en(/home.html)?$ /en/ [L]

RewriteRule ^en(/home.html)?$ /en/ [L]

這僅匹配/ en和/en/home.html,不匹配其他網址。

您當前的解決方案不起作用,因為RewriteRule ^(.*)$ /index.php/$1 [QSA,L]已經捕獲了所有輸入RewriteRule ^(.*)$ /index.php/$1 [QSA,L] L標志表示最后,這意味着不應再處理任何規則。

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

#Everything from here has to do with the line mentioned above
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [QSA,L] # This catches all input

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

RewriteRule ^en(/home.html)?$ /en/ [L]

相反,您要處理的所有內容都需要在該行之前上移:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /


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

RewriteRule ^en(/home.html)?$ /en/ [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]

除此之外,在這里閱讀mod_rewrite正則表達式也無濟於事。

就像改變一樣簡單

^en(/home.html)?$ /en/ [L]

^/en(/home.html)?$ /en/ [L] (注意額外的斜杠)

暫無
暫無

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

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