【发布时间】:2012-08-26 10:06:25
【问题描述】:
我正在尝试重写一个 URL,使其对用户/搜索引擎友好,然后 301 将原始 URL 重定向到新 URL。
目前帖子生成如下: example.com/blog/post.php?s=nice-post
但我希望它们看起来像这样: example.com/blog/nice-post
这是我目前所得到的:
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{QUERY_STRING} ^s=(.+)$
RewriteRule post.php /%1? [R=301,L]
RewriteCond %{REQUEST_URI} !post.php
RewriteRule ^([a-zA-Z0-9_-]+)$ post.php?s=$1
不幸的是,这与 404 重定向冲突,将所有未找到的页面发送到空白 post.php 文件,我不知道为什么。有没有更好的方法来处理 URL 重写/重定向?
感谢您的关注:)
【问题讨论】:
-
如果没有找到帖子,您能否更改
post.php本身以发出404(header()是您的朋友)?这将是我能想到的最简单的方法,因为您的重写规则不可能知道哪些帖子存在,哪些不存在。 -
嗨@tdammers,那很好。我的 php 技能还很初级——你有资源链接吗?
-
在
header()上试用 PHP 文档:php.net/manual/en/function.header.php -
谢谢@tdammers,但我想你已经把我弄丢了——这是一个非常普通的页面......
标签: .htaccess mod-rewrite redirect http-status-code-301 friendly-url