簡體   English   中英

使用.htaccess清理查詢字符串網址

[英]Clean query strings urls with .htaccess

我需要有關該死的htaccess文件的幫助,RegEx只是讓我感到困惑,我無法處理基本的重定向,但是一旦它進入查詢字符串,我就會丟失它。

所以這是問題

我正在嘗試清理自己的網址,所以我想采用原始路徑:

http://localhost/webcampaign/projects/project.php?id=1917-Bungalow

並顯示出來

http://localhost/webcampaign/projects/1917-Bungalow

這是文件結構的照片,可以提供更好的主意

在此處輸入圖片說明

我將所有項目都設置成這樣的數組

$projects = array();
$projects["1917-Bungalow"] = array(
 "name" => "1917 Bungalow",
 "heroClass" => "hero-bungalow",
 "mainImg" => BASE_URL ."images/bungalow_main.jpg",
 "previewImg" => BASE_URL ."images/bungalow_preview.jpg",
 "year" => "2013",
 "yearClass" => "twenty13",
 "location" => "Autstin, Texas",
 "photographer" => "Rachel Cruz",
 "detailOne" => BASE_URL ."images/bungalow_detail1.jpg",
 "detailTwo" => BASE_URL ."images/bungalow_detail2.jpg",
 "detailThree" => BASE_URL ."images/bungalow_detail3.jpg",
 "detailFour" => BASE_URL ."images/bungalow_detail4.jpg",
 "description" => "lorem ipsum and shit",
 "detailOneSum" => "lorem ipsum",
 "detailTwoSum" => "lorem ipsum",
 "detailThreeSum" => "lorem ipsum",
 "detailFourSum" => "Lorem ipsum",
 "materials" => array("matOne","matTwo","matThree"),
 "materialImg" => array(BASE_URL ."images/bungalow_mat1.jpg",BASE_URL        .             "images/bungalow_mat2.jpg",BASE_URL ."images/bungalow_mat3.jpg"),
"testamonialImg" => BASE_URL ."images/client.jpg",
"testamonial" => "Cabin Is Great!"
);

然后在project.php頁面中,使用

 $project_id = $_GET["id"];
 $project = $projects[$project_id];

那會影響什么嗎? 謝謝,我是這個新手

這是我最后一次嘗試重寫

RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule ^project.php$ /projects/%1/? [R=301]

任何幫助,將不勝感激。 干杯

^字符匹配路徑的開頭,但URL中的路徑以webcampaign開頭而不是project.php

嘗試從RewriteRule刪除^ 我還認為您需要從重定向URL中刪除/projects/ ,因為它看起來像是.htaccess所在的目錄。

RewriteEngine On
RewriteBase /webcampaign/

RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule project.php$ projects/%1? [R=301]

編輯:

因此,根據您更新的問題,似乎您想要的是與請求相反的內容,因為重寫模塊僅重寫傳入的URL,而不是腳本輸出的URL。

第一件事是在HTML輸出中,將鏈接更改為要顯示的格式。 這就是評論者所說的“調整html頁面上的鏈接”的意思。

echo '<a href="http://localhost/webcampaign/projects/1917-Bungalow">1917 Bungalow</a>';

接下來,使用這些新的.htaccess規則使用正確的id參數將上述URL重寫到project.php頁面:

RewriteEngine On
RewriteBase /webcampaign/

RewriteRule projects/([A-Za-z0-9-]+)/?$ projects/project.php?id=$1 [NC,L]

將此代碼放在您的DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} \s/+(webcampaign/projects)/project\.php\?id=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(webcampaign/projects)/([^/]+)/?$ $1?id=$2 [L,QSA,NC]

暫無
暫無

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

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