使用 mod_rewrite 更改 URL 中的單詞的問題 (Issue changing a word in a URL using mod_rewrite)


問題描述

使用 mod_rewrite 更改 URL 中的單詞的問題 (Issue changing a word in a URL using mod_rewrite)

I'm trying to change the word "portfolio" in my URLs to "portfolio/project" and inadvertently created a redirect loop. Would appreciate any help in pointing me in the right direction.

Example:

http://www.example.com/portfolio/interactive/abc/ to 

http://www.example.com/portfolio/project/interactive/abc/

Current htaccess (last two lines relates to issue):

redirect 301 "/sitemap.xml" http://www.example.com/sitemap.php

RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/sitemap.php
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{REQUEST_URI} /.*portfolio.*$ [NC]
RewriteRule ^(.*)portfolio(.*)$ /$1portfolio/project$2 [R=301,L]

參考解法

方法 1:

Your problem is that your regex also matches your target, so after the redirect, the URI matches the same rule and gets redirected again (you may have noticed that there's a bunch of /project/project/project/project/project/project/project in the URI)

Add an exclusion condition:

RewriteCond %{REQUEST_URI} !portfolio/project
RewriteCond %{REQUEST_URI} /.*portfolio.*$ [NC]
RewriteRule ^(.*)portfolio(.*)$ /$1portfolio/project$2 [R=301,L]

(by jsuissaJon Lin)

參考文件

  1. Issue changing a word in a URL using mod_rewrite (CC BY-SA 3.0/4.0)

#.htaccess #mod-rewrite






相關問題

使用 htaccess 從基本 URL 中刪除變量 (Remove variable from base URL with htaccess)

多個相同的 url htaccess 重定向 (Multiple same url htaccess redirect)

使用 mod_rewrite 更改 URL 中的單詞的問題 (Issue changing a word in a URL using mod_rewrite)

無法在 XAMPP 中進行 301.htaccess 重定向 (Cannot 301.htaccess redirect in XAMPP)

Cách ẩn mọi thứ sau tên trang web của bạn bằng .htaccess (How to hide everything after your webpage name with .htaccess)

htaccess 顯示內部服務器錯誤 (htaccess show internal server error)

mod-rewrite 結合了兩種不同的重寫規則 (mod-rewrite combine two different rewrite rules)

安全的 PHP 文件上傳 (Secure PHP file uploading)

用 .htaccess 重寫基於日期的 URL:s - 解決方案? (Rewriting date-based URL:s with .htaccess - solution?)

htaccess 強制 https 和 www 到非 www,但子域僅 https (htaccess force https & www to non-www, but subdomain only https)

重定向太多。設置 htaccess 以重定向 (too many redirects. setting up htaccess to redirect)

.htaccess https、www 和子域靜默重寫 (.htaccess https, www and subdomain silent rewrite)







留言討論