我試圖寫一個重寫規則的作品是這樣的:
www.sitename.com/products.php?p=product&c=category
應該成爲
www.sitename.com/product/category
我曾嘗試以下,但我的正則表達式的知識是不是很理想,以下不起作用
RewriteRule ^(.*)/(.*)$ products.php?p=$1&c=$2 [QSA,L]
任何幫助,非常感謝!
我試圖寫一個重寫規則的作品是這樣的:
www.sitename.com/products.php?p=product&c=category
應該成爲
www.sitename.com/product/category
我曾嘗試以下,但我的正則表達式的知識是不是很理想,以下不起作用
RewriteRule ^(.*)/(.*)$ products.php?p=$1&c=$2 [QSA,L]
任何幫助,非常感謝!
您可以在DOCUMENT_ROOT/.htaccess
文件中使用此代碼:
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w-]+)/?$ products.php?p=$1&c=$2 [QSA,L]
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)\.html$ $1.php [NC,L]
這部分工作,但我想它必須比我的代碼更多。我在我的本地主機上測試這一切,並且所有內容都在一個文件夾中。所以我通過http:// localhost/sitename /訪問網站。我已經將RewriteBase更改爲/ sitename /,並且第一部分(products.php一)工作正常,但不幸的是,php到html文件名的轉換返回「未找到」。任何想法我做錯了什麼?謝謝! – 2014-12-01 20:57:08
對於這種情況需要:'RewriteCond%{DOCUMENT_ROOT} /sitename/$1\.php -f [NC]' – anubhava 2014-12-01 21:03:05
完美,謝謝! – 2014-12-01 21:12:30
嘗試([^/]+)
這似乎已經做到了,但不幸的是,現在像www.site.com/fund/aaa/bula/a任何路徑將去products.php ... – 2014-12-01 19:52:34
是的,我喜歡做所有的第一個uri段我的路線因爲這個原因是靜態的。 – AlienWebguy 2014-12-01 20:04:07
我怎樣才能使該部分靜態,以避免這種行爲?謝謝! – 2014-12-01 20:09:47
更換(.*)
嘗試是這樣的:
RewriteRule www.sitename.com/(.*)/(.*) $products.php?p=$1&c=$2 [QSA,L]
可以在this site測試重寫規則。
不幸的是你的代碼不起作用。資源網站看起來不錯,不幸的是,似乎也沒有工作。也許我錯過了一些東西。 – 2014-12-01 19:51:05
它位於直接在網站上,沒有其他規則的根源。 – 2014-12-01 20:07:07
需要更多信息。你想用這個規則處理的URL是什麼?有更多規則等嗎? – anubhava 2014-12-01 20:20:56
我只想把它的兩個變量products.php重定向到site.com/var1/var2。我希望所有其他途徑都能夠發揮作用並保持一致。我將要添加的唯一其他規則是'RewriteRule ^(。*)\。html $ $ 1 \ .php [QSA,L]',因此它將PHP擴展轉換爲簡單文件的html。 – 2014-12-01 20:28:17