我之前更改了我的.htaccess
文件,以便我的'子目录'(13 /)可以是我用于主域的“目录”,添加:
RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$ 13/index.php [L]
现在,我想将.php
扩展名和扩展程序(例如index.php?eventid=3
)移至index/something
编辑#1 [其中something
是数据库中存储的id
的名称]
我该怎么做?
以前,我在一些PHP框架中工作,但他们已经有一个专用的url
文件。所以我从未想过太多。但这一次,我没有使用任何框架,所以我需要修改.htaccess
。
我环顾四周,但无法找到任何可靠的博客/来源。
编辑#2
我的子目录是public_html/13/
。
即,www.mydomain.com
重定向到www.mydomain.com/13/
现在,我想以www.mydomain.com/13/events.php?eventid=1
www.mydomain.com/events/44
答案 0 :(得分:1)
RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)/?$ $1.php?$2=$3
上述代码会将http://www.mydomain.com/index/eventid/3/重定向到http://www.mydomain.com/index.php?eventid=3
htaccess非常灵活,一旦理解了语法,就可以轻松创建上述变体。您将需要阅读可以使用的正则表达式以及Rewrite模块提供的无数选项。我的大多数重定向看起来都像上面那样,非常简单。
编辑:你正在寻找的一个例子是Wordpress,它使用slugs来识别基于比ID号更具语义的页面。您必须从数据库中对项目的名称进行url编码,并将其作为slug存储在数据库中,或者在检索页面内容的数据库查询中找到使其可用的其他方法。然后你的htaccess看起来像这样:
RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/?$ $1.php?slug=$2
在PHP中,您需要创建slug并将它们存储在db中,以便它们可以在查询中用作ID。
EDIT2:尝试将整个htaccess文件更改为:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://yourdomain.com/$1 [R=301,L]
RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)/?$ $1.php?$2=$3
</IfModule>
我测试了它并且它有效。你的htaccess中的其他东西搞砸了。
答案 1 :(得分:1)
只需使用以下规则:
RewriteRule ^index/([0-9]+)/?$ /index.php?eventid=$1 [QSA,L]