我在使用.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配置中是否遗漏或错误?如果有人可以伸出援助之手,请提出意见并表示非常感谢。感谢。
答案 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
。