【问题标题】:How to make dynamic mod-rewrite for subdirs如何为子目录进行动态 mod-rewrite
【发布时间】:2014-10-23 15:05:44
【问题描述】:

我的网页上有这个目录结构:

rootOfweb/services/oneservice/service1.php
rootOfweb/services/oneservice/service2.php

rootOfweb/services/anothersercice/service1.php
rootOfweb/services/anothersercice/service2.php

www.example.com/index.php?sideID=nameOfService&p=services/oneservice/service2

我在 php 中有这段代码,包括所需的文件:

 <?php
     if(isset($_GET["p"]))
     {
      $side = $_GET["p"];
      include ($side.'.php');
     }
 ?>

我在不同的子目录上有不同的名称,并且我制作了一个 mod_rewrite 可以在以下条件之一下工作:

RewriteRule ^([a-åA-Å0-9_!-]+)/([a-åA-Å0-9_!-]+)$ index.php?sideID=$1&p=services/oneservice/$2

aboue 规则适用于第一个服务(rootOfweb/services/oneservice/ -all service files -)

我需要创建一个适用于所有子目录的规则。

【问题讨论】:

  • 问题又出在你漂亮的 URL http://example.com/services/subfile1 不包含 subdir/YYYY 因此你必须在目标中硬编码它。如果您可以将漂亮的 URL 保留为:http://example.com/services/subdir/YYYY/subfile1,那么一个重写规则可以处理所有此类情况。
  • 重写会是什么样子?你能举个例子吗?

标签: regex apache .htaccess mod-rewrite redirect


【解决方案1】:

根据上面 cmets 部分的讨论,您可以有这样的重写规则:

RewriteEngine On
RewriteBase /

RewriteRule ^([\w!-]+)/([\w!-]+/[^/]+/[\w!-]+)/?$ index.php?sideID=$1&p=$2 [L,QSA,NC]

这将支持这样的 URL:

http://example.com/services/subdir/2014/subfile1
http://example.com/services/subdir/2013/subfile2
http://example.com/services/subdir123/2010/subfile234

【讨论】:

  • 您在浏览器中输入了什么网址,代码中的$_GET['p'] 是什么?我把它当作$_GET[['p'] =&gt; subdir/2014/subfile1
  • 原始网址:example.com/index.php?sideID=services&p=service/painting/… => example.com/painting/learntopaint。这适用于我添加的规则,但是通过这样做,我需要为服务中的每个子目录设置一个自己的规则。
  • 对,我知道,但请阅读您的问题下方的我的 cmets
  • 我试过了,seam 无法获取 $_GET['p'],因此无法读取文件结构。
  • 忘记文件结构,只需将链接作为上面的示例,例如http://example.com/services/subdir/2014/subfile1 我建议的规则。
【解决方案2】:

你应该能够改变你的正则表达式:

RewriteRule ^([a-åA-Å0-9_!-]+)/([/a-åA-Å0-9_!-]+)$ index.php?sideID=$1&p=subdir/$2

【讨论】:

  • 我得到了 subdir/anotherdir/thefile.php,但是如何用某种正则表达式实际替换它?
猜你喜欢
  • 1970-01-01
  • 2014-02-21
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多