htaccess重定向查询未加载页面

时间:2014-06-17 04:14:44

标签: php regex apache .htaccess mod-rewrite

我无法让这个工作。我想要

http://localhost/test/post.php?id=15 

显示

http://localhost/test/post/15

我尝试加载没有css的页面,并向我显示我的自定义程序404错误页面

Options -Indexes -MultiViews +FollowSymlinks
RewriteEngine On
RewriteBase /test/
ErrorDocument 404 /errors/404.php

RewriteCond %{QUERY_STRING} ^id=(.+)$ [NC]
RewriteRule ^post\.php post/%1? [R,L]

请帮帮我!

1 个答案:

答案 0 :(得分:1)

您需要%{THE_REQUEST}变量。 THE_REQUEST变量表示Apache从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1

您的代码将是:

ErrorDocument 404 /errors/404.php
Options -Indexes -MultiViews +FollowSymlinks
RewriteEngine On
RewriteBase /test/

RewriteCond %{THE_REQUEST} /post\.php\?id=([^\s&]+) [NC]
RewriteRule ^ post/%1? [R=302,L]

RewriteRule ^post/([^/.]+)/?$ post.php?id=$1 [L,QSA,NC]