由于我缺乏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>
非常感谢提前。
答案 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