mod_rewrite ..隐藏细节?

时间:2013-02-01 21:35:09

标签: wordpress apache mod-rewrite

我已经安装了一个具有投资组合功能的WP主题 - 这创建/技能(用于类别)和/ portfolio(用于条目)。通过对代码进行搜索并将“技能”的每个实例更改为“射击”,有可能“破坏”我不理解的东西,是否有办法将mod_rewrite更改/技能转换为其他内容并将其显示为此类(甚至虽然实际的“静态网址”仍然是技能?

当前层次结构:

  • /技能
  • /技能/婚礼
  • /技能/爆头

[点击婚礼中的投资组合条目]

  • /组合/约翰简

理想情况下:

  • /拍摄/
  • /拍摄/婚礼
  • /拍摄/爆头

非常感谢任何帮助。

当前代码:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule /shooting/(.*)$ skills/$1 [L]
</IfModule>
# END WordPress

我相信它们都需要功能,因为WP将继续内部链接到/ skills /

1 个答案:

答案 0 :(得分:0)

当前规则的工作方式,/shooting/weddings的请求将发送到行RewriteRule . /index.php [L]中的index.php,后续行将不会被读取。如果您将行RewriteRule ^shooting/(.*)$ /skills/$1向上移动到两个RewriteCond行之上并将其修改为读起来就像我刚写的那样,这应该使/shooting/weddings默默地重写为/skills/weddings,这会然后被送到index.php。

编辑:更新了以下规则。最初我认为你只是想添加/拍摄以响应/技能,现在它做,但现在我认为你也希望有人加载/技能被重定向到/拍摄。技能RewriteRule将所有/技能流量重定向到/射击。一旦用户被重定向,他们就会点击射击RewriteRule,它会默默地将它们重写为/技能,然后由WordPress接收。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^skills/(.*)$ /shooting/$1 [R=301,L]
RewriteRule ^shooting/(.*)$ /skills/$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress