2016-07-17 177 views
0

我想將URL 從:http://some-url/pl/news/重定向到http://some-url/blog。但是當用戶類型也是http://some-url/news/(不帶/ pl)時,還想將其重定向到:http://some-url/blog。正因爲如此我寫了一個規則:在.htaccess中重寫規則

RewriteRule (pl)?/news(.*) /blog/ [R=301,L] 

當我正則表達式測試它在這兩種情況下,不是用/ PL或沒有它匹配測試。但是當我嘗試在.htaccess測試程序中測試此規則時,它只會在存在帶有/pl的URL時匹配。有人能解釋一下嗎,爲什麼會這樣呢?以正確的方式寫這條規則的正確方法是什麼?

+0

可能重複的[提示調試.htaccess重寫規則](http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules) – jpaljasma

回答

0

我不是100%確定爲什麼會發生這種情況,所以我的建議是嘗試將它放在.htaccess文件中,看看它是否有效。

RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_URI} /pl/news(.*) [OR] 
RewriteCond %{REQUEST_URI} /news(.*) 
RewriteRule .* /blog [R=301] 
+0

不幸的是,它不工作 –

0

嘗試這樣的事情也許

RewriteRule ^(pl/)?news/?$ /blog/ [R=301,L] 
1

在您的Web服務器,你如何重定向一個網頁到另一個的根級使用的htaccess是:

RewriteRule ^url-string-to-redirect$ http://www.yourdomain.com/your-new-url-string [R=301,L] 

或者

Redirect 301 /path/to-old-url http://www.cyourdomain.com/path/to-new-url 

重定向co整個目錄到另一個的ntents使用以下:

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

要將整個目錄的內容重定向到webserving根:

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

向子目錄的內容重定向到另一個域,但在相同的子目錄

Redirect 301 /subdirectory http://www.anotherdomain.com/subdirectory 

確保.htaccess文件的開口包含2行代碼下面這使得Apache模塊重寫網址,則N將在它們下面您重定向

Options +FollowSymLinks 
RewriteEngine On 

重定向的URL從舊到新域名使用301個重定向在.htaccess

當你需要從舊域切換網站到一個新的領域,你需要重定向所有的網頁網址,這是當htaccess是你的朋友。

下面的代碼將爲newDomain.com的www和非www版本的olddomain.com創建301個url重定向。

將此.htaccess文件添加到舊網站webroot,並將文件從舊網站上傳到新網站,以查看從舊網域到新網域的無縫切換。

所以下面的例子中被重定向從olddomain.com所有URL到newdomain.com

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

您也可以應用此子域 - 所以下面的例子是從subdomain.olddomain.com重定向所有URL到subdomain.newdomain。COM

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^subdomain.olddomain.com$ 
RewriteRule ^(.*)$ http://subdomain.newdomain.com/$1 [R=301,L] 
RewriteCond %{HTTP_HOST} ^www.subdomain.olddomain.com$ 
RewriteRule ^(.*)$ http://subdomain.newdomain.com/$1 [R=301,L] 

要強制網站使用HTTPS上運行整個網站的安全協議SSL你可以做一個簡單的編輯在文檔根目錄的.htaccess文件。

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] 

要強制特定文件夾或目錄服務通過SSL,該文件夾中創建一個.htaccess文件,並應用以下它:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L] 

這是假定SSL是在域上啓用啓用mod_rewrite模塊的Apache Web服務器。