首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建多个htaccess重写

创建多个htaccess重写
EN

Stack Overflow用户
提问于 2012-07-16 05:27:10
回答 1查看 96关注 0票数 1

我目前有一个将dyhamb.com/episode.php?episode=1重写为dyhamb.com/1的.htaccess文件。我也想要另一个将dyhamb.com/blogpost.php?bp=1重写为dyhamb.com/blog/1的工具。

我已经为剧集重写设置了代码,但是当我去添加博客重写时,我似乎不能让它工作。我该如何修改以下代码来实现这一点呢?

代码语言:javascript
运行
复制
Options -Multiviews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^dyhamb\.com$
RewriteRule ^(.*) http://dyhamb.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(0|[1-9]\d{0,2})$ /episode.php?episode=$1 [L,QSA]
RewriteRule ^/blog$ /blogpost.php?blog=$1 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+episode\.php\?episode=(\d+) [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blogpost\.php\?blog=(\d+) [NC]

RewriteRule ^ %1? [R=301,L]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-16 23:50:06

您需要将这两个条件分开,并复制您已有的条件集。这些条件仅适用于紧随其后的规则:

代码语言:javascript
运行
复制
RewriteCond <something>
RewriteCond <something-else>
# those 2 conditions only apply to this rule:
RewriteRule <match> <target>

# This rule has no conditions
RewriteRule <match2> <target2>

所以你想让你的htaccess看起来像这样:

代码语言:javascript
运行
复制
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^dyhamb\.com$
RewriteRule ^(.*) http://dyhamb.com/$1 [R=301,L]

# Setup conditions for internal rewrite of episode.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite for episode.php
RewriteRule ^(0|[1-9]\d{0,2})$ /episode.php?episode=$1 [L,QSA]

# Setup conditions for internal rewrite of blopost.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite for blogpost.php
RewriteRule ^blog/(.*)$ /blogpost.php?blog=$1 [L,QSA]

# External redirect for episodes
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+episode\.php\?episode=(\d+) [NC]
RewriteRule ^ /%1? [R=301,L]

# External redirect for blog
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+blogpost\.php\?blog=(\d+) [NC]
RewriteRule ^ /blog/%1? [R=301,L]

请注意,需要对您的博客规则进行一些更改。如果这些规则将位于.htaccess文件中,则在重写引擎处理它之前,URI中的前导斜杠将被去掉,因此表达式^/blog需要为^blog,并且我在博客后面添加了一个反向引用的匹配(.*),因为您希望能够访问它后面的ID以插入到目标中的blog=查询字符串中。此外,博客的外部重定向在ID之前缺少/blog/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11495746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档