我遇到了一個奇怪的問題。我有一個.htaccess文件,只有當我使這些最底層的兩個條件/重寫不同的文件夾時纔有效。我希望products.php和specs.php頁面都能顯示:www.example.com/products/,然後分別顯示它們各自的URL以獲得相應的網址。現在,我只能得到這個(有點)工作,如果我有不同的文件夾名稱。 Products.php顯示了一個類別中的許多產品的簡要描述(域名後它會顯示/糖果)。規格頁面只顯示一個產品(域名顯示產品線和產品名稱糖果/甜心)。任何幫助將不勝感激!無法使用.htaccess將兩個網址重寫爲相同的文件夾
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase/
#products.php pages
RewriteCond %{THE_REQUEST} html/products.php
RewriteCond %{QUERY_STRING} ^slug=(.*)$
RewriteRule ^html/products\.php$ http://www.example.com/products/%1? [R=301,L]
RewriteRule ^products/(.*)$ /html/products.php?slug=$1 [L]
#specs.php pages
#RewriteCond %{THE_REQUEST} html/specs.php
#RewriteCond %{QUERY_STRING} ^prodslug=(.*)$
#RewriteRule ^html/specspage\.php$ http://www.example.com/specs/%1? [R=301,L]
#RewriteRule ^specs/(.*)$ /html/specs.php?prodslug=$1 [L]
謝謝您的答覆。我想我仍然對這個重寫的工作方式有點困惑。我認爲它會一直等到它收到html/products.php的請求,然後它會查看查詢字符串。之後它會重寫。由於每個規則塊具有不同的頁面請求,我認爲它應該能夠寫入相同的文件夾,因爲每個請求都是單獨處理的,並且適用於單獨的頁面。我很困惑! 我確實有一個不一致,但在我的實際腳本中,它不在那裏。我爲這個例子簡化了我的文件名。 – user2213851
@ user2213851在像「http:// www.example.com/products/asdljfcaijfaewlf」這樣的URL中沒有查詢字符串。這是瀏覽器要求的,這是mod_rewrite將用來匹配的內容。然後,根據匹配,將*重寫爲'/ html/products.php'或'/ html/specs.php',並*創建*查詢字符串。 –
哦,我明白了!我仍然從不潔淨的網站的角度來看待它,這當然是不正確的!非常感謝你的幫助!!!! – user2213851