我有我的网址 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 文件?
答案 0 :(得分:0)
也许你的专栏有目的
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]
然后,你可以使用我之前说的话。
答案 1 :(得分:0)
您在.htaccess中的规则仅使用php脚本文件名重写传入的seo-pretty URls到URL。但是如果您需要构建URL作为 / sub-products / catid / 42 ,则必须更改PHP代码,以呈现HTML输出。
例如
while ( $products as $product ) {
echo '<a href="/sub-products/catid/"'.$product['id'].'>'.$product['name'].'</a>;
}
答案 2 :(得分:0)
我不确定你是否已经改变了你的第一个声明,但它会在你想要改写的.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]
希望它可以帮助你前进。
编辑:在我的系统上测试后做了一些更改。