htaccess重写规则不起作用

时间:2016-08-09 10:13:32

标签: apache .htaccess

我在htaccess文件中遇到重写规则的问题。请帮忙。

这是我目前的htaccess文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /product-project/
RewriteRule . index.php [L]
</IfModule>

现在我想创建一个重写规则,例如“product / category / id”应重定向到“product / profile?profile_id = id”。为此,我使用了

RewriteRule ^product/.*/(.*)$ product/profile?profile_id=$1 [L,R]

在某种程度上工作正常。

第一个问题 - &gt;它正确重定向,但URL也会更改。它应该保留为“product / category / 10”,如果我使用id为10.但是当我使用它时,它正确地重定向,但URL更改为“product / profile?profile_id = 10”。我读到某处使用[L,P]而不是[L,R],但是它给出了服务器错误。

第二个问题 - &gt;现在我想创建一个新的重写规则,例如“product / id”也应该重定向到“product / profile?profile_id = id”。为此,我使用了

RewriteRule ^product/(.*)$ product/profile?profile_id=$1 [L,R]

现在这不起作用&amp;显示服务器错误

第三个问题 - &gt;我是否还可以创建新的重写规则,例如“/ id”也应该重定向到“product / profile?profile_id = id”。这可能吗?

第四个问题 - &gt;我是否还可以创建新的重写规则,例如“/ id1 / id2”也应该重定向到“product / profile?profile_id = id1&amp; serial_id = id2”。这可能吗?

提前感谢您的时间。

2 个答案:

答案 0 :(得分:1)

使用它..

Options All -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

答案 1 :(得分:1)

这是你想要的,请检查。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ $1/$2?profile_id=$3

两个id的

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ $1/$2?profile_id=$3&id=$4