[英]URL rewriting using php not working
我的網址為http://public_html.com/sub-products.php?catid=42
我希望它看起來像http://public_html.com/sub-products/catid/42
我也做了一個.htaccess文件。 但我的網址仍然沒有變化
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^sub-products/catid/([0-9]+)/?$ sub-products.php?catid=$1 [L]
我是否還需要更改php文件中的任何內容?
php文件使用.htaccess文件需要什么代碼?
也許您的路線有目的
RewriteRule ^(.*)$ $1.php
但是我看不到它的需要,所以我想
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^sub-products/catid/([0-9]+)/?$ /sub-products.php?catid=$1 [L]
應該管用。
編輯:
如果您嘗試訪問http://public_html.com/sub-products/catid/42網址,則此方法應該有效
(或http://public_html.com/sub-products/catid/42/ btw)
如果你想要什么
http://public_html.com/sub-products.php?catid=42
至
http://public_html.com/sub-products/catid/42/
您可能需要這樣的東西:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^catid=([0-9]+)$
RewriteRule ^sub-products.php$ /sub-products/catid/%1/? [R=301,L]
然后,您可以使用我之前所說的內容。
您在.htaccess中的規則僅將傳入的seo漂亮URls重寫為具有php腳本文件名的URL。 但是,如果您需要將url構造為/ sub-products / catid / 42 ,則必須更改PHP代碼,以呈現HTML輸出。
例如
while ( $products as $product ) {
echo '<a href="/sub-products/catid/"'.$product['id'].'>'.$product['name'].'</a>;
}
我不確定您是否切換了第一個語句,但是它在您的.htaccess
文件中以其他方式重寫。 也許這會工作。
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} catid=([0-9]+)$
RewriteRule ^/?sub-products.php /sub-products/catid/%1 [R,L]
如果您想要一個更通用的規則,而不僅僅是catid
話,那么RewriteRule可以工作:
RewriteCond %{QUERY_STRING} ([a-zA-Z]+)=([0-9]+)$
RewriteRule ^/?sub-products.php /sub-products/%1/%2 [R,L]
希望它能幫助您前進。
編輯:在我的系統上對其進行測試后進行了一些更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.