此代码可以正常工作:
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
依此类推。
谢谢。
罗恩
答案 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文件不能)。