簡體   English   中英

我怎樣才能讓 htaccess 重寫而不影響我頁面上的其他 url 鏈接

[英]How can i make htaccess rewrite not to affect other url links on my page

使用.htaccess重寫我的 URL 后,我現在面臨着不同的挑戰。 我的detail.php頁面上的所有其他鏈接不再正確。

例子:

這應該是正常的 URL:

http://localhost/FashionSite/about-us.php

但它現在顯示:

http://localhost/FashionSite/product/Coporate/polo-and-trouser/about-us.php

detail.php頁面上的所有 URL 鏈接都會發生這種情況。

下面是我的.htaccess代碼,它運行良好,但在detail頁面上,所有其他 URL 都會更改:

<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(admin|user)($|/) - [L]
RewriteRule ^(slide|user)($|/) - [L]
RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteRule ^product/(.*)/(.*)/ detail.php?ID=$1&url=$2 [L]
RewriteRule ^product/[^/]+/[^/]+(/.+)$ http://localhost/FashionSite/$1  [L]
</IfModule>

請問我該怎么做或添加到代碼中才能使這些鏈接正常。

看起來您正在使用相對URL 鏈接到您的頁面。 HTML 中的任何相關鏈接都與客戶端 URL 相關。 如果您正在重寫 URL,那么您的鏈接現在將與重寫的 URL 相關。

例如,如果瀏覽器當前顯示 URL http://localhost/FashionSite/product/Coporate/polo-and-trouser/detail.php則使用<a href="about-us.php">形式的錨點自然會與這個 URL 相關,瀏覽器會將其解析為http://localhost/FashionSite/product/Coporate/polo-and-trouser/about-us.php

您需要更改內部鏈接以使用相對於根目錄(以斜杠開頭)或絕對 URL(使用方案 + 主機名)。 例如: <a href="about-us.php">應該更改為<a href="/FashionSite/about-us.php"> (如果所有內容都在/FashionSite子目錄中。

或者,在頁面的head設置base標簽,向瀏覽器指示所有相關鏈接應該對於的 URL。 例如:

<base href="http://localhost/FashionSite/index.php">

但是, base標簽並非沒有警告。 例如<a href="#top"形式的頁內錨點現在也與此基本 URL 相關。 將所有鏈接更改為根相關(或絕對)鏈接是可取的。

請參閱我在 Pro Webmasters stack 上討論類似問題的答案:

暫無
暫無

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

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