簡體   English   中英

無法使用.htaccess將兩個網址重寫到同一文件夾

[英]Unable to rewrite two urls to same folder with .htaccess

我有一個奇怪的問題。 我有一個.htaccess文件,只有在滿足以下這兩個條件/重寫不同的文件夾后,該文件才能工作。 我希望products.php和specs.php頁面都顯示:www.example.com/products/,其后分別是漂亮的URL。 就目前而言,如果我使用不同的文件夾名稱,則只能使它工作。 Products.php在類別中顯示了許多產品的簡短描述(域后將顯示/ candy)。 規格頁面僅顯示一種產品(域后顯示產品系列和產品名稱candy / sweethearts)。 任何幫助將不勝感激!

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]

它們必須不同,否則mod_rewrite將不知道是產品還是規格。 如果網址是:

http://www.example.com/products/asdljfcaijfaewlf

是“ asdljfcaijfaewlf ”產品的一部分嗎? 還是它只是一個規格? 還是都不是? 無法知道mod_rewrite的信息,因為它無法從數據庫或存儲該信息的位置獲取該信息。 它所知道的就是如何根據請求進行匹配。 這就是為什么您需要允許它與/products//specs/文件夾匹配,以便它知道是否將它們路由到products.phpspecs.php

另外,您的規則存在不一致之處:

RewriteRule ^html/specspage\.php$ http://www.example.com/specs/%1? [R=301,L]

需要是

RewriteRule ^html/specs\.php$ http://www.example.com/specs/%1? [R=301,L]

暫無
暫無

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

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