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