htaccess查询。 2重写2个主页的规则

时间:2012-04-03 09:28:14

标签: .htaccess mod-rewrite

由于我缺乏htaccess的经验和知识,我希望有人能够帮助解决我遇到的问题。

我们正在做的是在根目录中运行IP板论坛软件和wordpress。 IPB有index.php文件(因为有索引的url),新的Wordpress的index.php文件已经重命名为blog.php。

在htaccess文件的最顶部,我们添加了:DirectoryIndex blog.php index.php - 所以新的wordpress首先打开。

我遇到的问题是试图在htaccess文件中为论坛软件中的友好URL以及新wordpress的固定链接进行2次重写。

我似乎只有一个或另一个。

请任何人都可以告诉我,或指出我正确的方向让两个工作。

这是我到目前为止所做的,但遗憾的是没有快乐,但如果我们删除其中一个条件并重写,则可以正常工作。

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog.php [L]
</IfModule>

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

不确定您是否还想要答案。无论哪种方式,如果你想要去两个不同的页面,你需要一些区分它们的方法。

输入目录时,

DirectoryIndex基本上会告诉默认文件(和顺序)。因此,目录中http://host.com/blog.php的{​​{1}}将提供index.php,因为它是您为服务器提供的列表中的第一个。如果只有blog.php,则会提供此服务。如果两者都没有(并且列表中没有其他内容),则会抛出404,因为找不到默认文件。

编辑:如果找不到,它会尝试列出内容。我的错。如果您不允许目录列表,那么它可能会显示错误代码。要关闭目录列表,请查看选项:http://httpd.apache.org/docs/current/mod/core.html#options

http://httpd.apache.org/docs/current/mod/mod_dir.html

您的重写规则似乎有点想以不同的顺序执行相同的操作。如果您请求index.php并且http://host.com/a不是文件或目录(根据条件),它将转到a ..如果index.php不存在,那么它将循环,直到服务器捕获它,因为你没有检查。所以,这意味着第二组条件没有做任何事情,因为index.php存在或不存在,除非它确实不会达到下一组。

您需要决定如何区分这两者(index.php的{​​{1}}和/blog/的{​​{1}}或其他内容,并将其中一个设为默认值。如果你想随机化它,我建议你通过PHP来实现。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

..从root重定向到/ forums /通过htaccess试试这个:

blog.php