重写URL在.htaccess文件中不起作用

时间:2015-02-14 13:31:40

标签: php apache .htaccess mod-rewrite url-rewriting

我在使用.htaccess重写一些友好的URL时遇到了问题。

根网址为http://www.example.com/my/

工作电话网址为http://www.example.com/my/Post.php?id=2

.htaccess文件和Post.php都位于子目录http://www.example.com/my/

但我希望它如下: http://www.example.com/my/job/kuantan/?id=2

.htaccess配置如下:

DirectoryIndex index.php

Options All -Indexes

#ErrorDocument 404 /404.php

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]

RewriteRule ^job/kuantan/([0-9]+)  /Post.php?id=$1 [L,QSA, NC]

但是,一旦我部署了上面的.htaccess配置文件,它也会提示500内部错误消息。

.htaccess配置中是否遗漏或错误?如果有人可以伸出援助之手,请提出意见并表示非常感谢。感谢。

3 个答案:

答案 0 :(得分:0)

您可以在/my/.htaccess中使用此代码:

DirectoryIndex index.php
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /my/

RewriteCond %{THE_REQUEST} /Post\.php [NC]
RewriteRule ^ job/kuantan [R=302,L,NE]

RewriteRule ^job/kuantan/?$ Post.php [L,NC]

查询字符串会自动转移,因此无需在规则中捕获它。

答案 1 :(得分:0)

您应该只需要一条规则:

RewriteRule ^/my/job/kuantan/$ /my/Post.php

默认情况下会继承查询字符串。

答案 2 :(得分:0)

假设.htaccess和Post.php位于子目录/my/中:

DirectoryIndex index.php
Options All -Indexes
#ErrorDocument 404 /404.php
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^job/kuantan/([0-9]+)$  Post.php?id=$1 [L,QSA,NC]

删除[]之间的所有空格。将/Post.php?id=1更改为Post.php?id=$1