是否可以在htaccess中使用if语句

时间:2017-10-02 19:54:37

标签: php .htaccess mod-rewrite

此代码可以正常工作:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?seo_name=$1

但是,我想添加if这样的语句,这是可能的以及如何?

if seo_name = cccc, go to page cccc.php

if seo_name = dddd, go to page dddd.php

依此类推。

谢谢。

罗恩

1 个答案:

答案 0 :(得分:1)

您可以使用RewriteRule并直接利用正则表达式。我认为他们足以区分你的网页。

RewriteRule ^(.*?)$ $1.php

或者,如果您只需要更换特定页面,您可以这样做:

RewriteRule ^mypage$ mypage.php

请注意,您甚至可以使用这些来将查询字符串传递给php以直接在源代码中进行区分,然后使用php include() s可以解决这个问题:

RewriteRule ^page([0-9]+)$ page.php?id=$1

请注意,这些网址替换不是重定向,浏览器也不会“看到”,因此html所需的任何相关文件都将从虚拟文件夹的路径中获取。

编辑:我的建议是让htaccess指向一个php文件(让我们称之为hub.php):

RewriteRule ^cccc$ hub.php?id=cccc
RewriteRule ^dddd$ hub.php?id=dddd

现在php将在hub.php

中完成这项工作
if ($_GET['id'] == 'cccc') {
   include('cccc.php');
}

if ($_GET['id'] == 'dddd') {
   include('dddd.php');
}

我认为有更好的方法可以做到这一点,但如果您更喜欢这种方式......这将使其无需更改cccc.php和dddd.php中的代码即可使用

通过"伟大的"工作到php,不要制作大的.htaccess文件(.htaccess修改需要Apache重新加载,php文件不能)。