簡體   English   中英

使用php重寫URL無法正常工作

[英]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.

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