1

我之前更改了我的.htaccess文件,以便我的“子目录”(13/)可以成为我用于主域的“目录”,方法是添加:

RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$ 13/index.php [L]

现在我想删除.php扩展名和扩展index.php?eventid=3index/something

EDIT#1 [存储在数据库中something的名称在哪里]id

我该怎么做?以前,我确实在一些 PHP 框架中工作,但它们已经有一个专用url文件。所以我从来没有想太多。但是这一次,我没有使用任何框架,所以我需要修改.htaccess.

我环顾四周,但找不到任何可靠的博客/来源。

编辑#2

我的子目录是public_html/13/.

即,www.mydomain.com重定向到www.mydomain.com/13/ 现在我想访问www.mydomain.com/13/events.php?eventid=1www.mydomain.com/events/44

4

2 回答 2

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 并将它们存储在数据库中,以便它们可以用作查询中的 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 中的其他东西把它搞砸了。

于 2013-01-21T18:49:05.803 回答
1

只需使用以下规则:

 RewriteRule ^index/([0-9]+)/?$ /index.php?eventid=$1 [QSA,L]
于 2013-01-21T18:52:31.867 回答