使用mod_rewrite指示伪目录的文件名

时间:2016-02-21 20:14:45

标签: php apache .htaccess mod-rewrite

是否可以使用文件名字符串作为mod_rewrite的指示符来返回伪目录?

我会详细说明:

在我的根目录(public_html)中,我有一个名为“pages”的目录,其中包含以下文件:

  • 使用example.php

  • 示例 - abc.php

  • instance.php

  • 实例 - 2.PHP

是否可以使用mod_rewrite来完成以下操作:

example.com/example / 检索 /pages/example.php

的文件

example.com/example/abc / 检索 /pages/example--abc.php

的文件

example.com/instance / 检索 /pages/instance.php

的文件

example.com/instance/2 / 检索 /pages/instance--2.php

的文件

依旧......?

到目前为止,我已成功使用以下内容将/示例指向/pages/example.php

RewriteCond %{REQUEST_URI} !pages/
RewriteRule ^(.*)$ pages/$1.php [L,QSA]

但是,目标文件名( - )中的双连字符定义伪目录的工作方式超出了我目前的掌握范围。

我一直在努力寻找一个无济于事的解决方案。

此外,上面的代码不允许使用尾部斜杠(并且它应该在理想的世界中)

任何帮助都非常感激。

谢谢,

JC

1 个答案:

答案 0 :(得分:2)

仅根据说明,您可以尝试:

<强>已更新

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/pages
RewriteRule ^([^/]+)/([^/]+)/?$ pages/$1--$2.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/pages
RewriteRule ^([^/]+)/?$ pages/$1.php [L]