Wordpress自定义mod_rewrite - totalnoob?

时间:2011-10-28 04:20:49

标签: wordpress .htaccess mod-rewrite

我正在尝试为我的wordpress安装制作一个自定义的mod_rewrite规则,我已经为我的页面结构设置了一个自定义规则,我想保留它。

我想制作的新自定义规则是,只要有变量,例如:www.mysite.com /?个人资料 = 用户名

我想让它看起来像:www.mysite.com/username

这是我当前的.htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我已经看过php.net和许多关于mod重写的教程,特别是对于wordpress,但它只是直接在我脑海中,我不明白。 如果有人能给我一些帮助以获得一些进展,我真的很感激,我真的想要了解mod_rewrite。

我假设我需要创建一个新的RewriteRule,但这就是我得到的。

由于 弗兰克

1 个答案:

答案 0 :(得分:0)

至少可以说,完成你想要完成的任务很困难。它需要一个额外的PHP文件来解析传入的请求,因为.htaccess无法知道URL的USERNAME部分是否实际上是用户名。

我提到的PHP文件会从数据库加载users表并将$ _GET ['profile']与条目进行比较,并在匹配时重写为/?profile = USERNAME

如果没有匹配,则只传递给index.php。

但是,这里有一个更简单的解决方案,可以保留很多你想要的东西:

RewriteRule ^profile/([^/]+)$ ?profile=$1 [L]

这样做是从/ profile / 用户名重写为/?profile = 用户名

这并不是您正在寻找的,但实施起来要容易得多。该规则应直接位于.htaccess文件中的RewriteRule ^index\.php$ - [L]下方。

如果您有任何疑问,我很乐意解释这里发生的一切。