簡體   English   中英

PHP重寫規則不適用於查詢字符串

[英]PHP rewrite rule is not working for query string

我在htaccess文件中編寫以下規則,以將查詢字符串更改為目錄結構

 RewriteRule ^dashboard/([0-9]*)?$ dashboard.php?user_id=$1

用於重寫網址。 它工作正常

localhost/project/dashboard // (dashboard.php)

和所有鏈接是

localhost/project/css/style.css
localhost/project/js/script.js

但是當我附加一個ID

localhost/project/dashboard/1 // (dashboard.php?user_id=1)

它將所有鏈接更改為

localhost/project/dashboard/css/style.css
localhost/project/dashboard/js/script.js

為什么將dashboard附加到所有鏈接

這是因為您“告訴他”要這樣做。

RewriteRule ^dashboard/([0-9]*)?$ dashboard.php?user_id=$1
         //  ^here you tell him to print that "dashboard"

當然,其他鏈接也可以工作-您甚至不將該規則與之匹配。

我在這里找到了您,向下滾動到標題“ Strip Query Strings”。 在那里,它說您要這樣做:

RewriteCond %{QUERY_STRING} example=
RewriteRule (.*) http://www.domain.com/$1? [R=301]

當然,只是將該URL更改為您自己的URL。

如何在您的html文件中引用style.css?

如果您具有這樣的href =“ css / style.css”,則HTML不會知道您正在重寫,認為/ 1是文件夾,並且會在dashboard / css / style.css中顯示

任何使用url重寫的系統通常都必須編寫樣式和腳本的所有路徑來避免這種情況。 因此您必須像這樣引用您的樣式href =“ http://localhost/project/css/style.css”

如果您有一個生產和開發環境,它將幫助您擁有一個像

if($SERVER['SERVER_NAME']=='localhost'){
  $BASE_URL = "http://localhost/project/"
}else{
  $BASE_URL = "http://mydomain.com/"
}

並將其放在對CSS,腳本或圖像的任何調用之前;)

暫無
暫無

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

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