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

.htaccess htaccess查询。2重写2个主页的规则,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我希望有人能帮我解决一个问题,因为我缺乏htaccess方面的经验和知识 我们正在做的是在根目录下运行IP Boards论坛软件和wordpress。IPB有index.php文件(因为有索引url),新Wordpress的index.php文件已重命名为blog.php 在htaccess文件的最顶端,我们添加了:DirectoryIndex blog.php index.php——因此新的wordpress首先打开 我遇到的问题是试图在htaccess文件中为来自论坛软件的友好URL和新wo

我希望有人能帮我解决一个问题,因为我缺乏htaccess方面的经验和知识

我们正在做的是在根目录下运行IP Boards论坛软件和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>

选项-多视图
重新启动发动机
重写基/
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/blog.php[L]

非常感谢

不确定您是否仍然需要答案。无论哪种方式,如果你试图进入两个不同的页面,你需要一些方法来区分它们

DirectoryIndex
基本上在输入目录时告诉默认文件(和顺序)。所以
http://host.com/
目录中的
blog.php
index.php
将提供
blog.php
,因为它是您给服务器的列表中的第一个。如果只有
index.php
,它将提供该功能。如果两者都没有(并且列表中没有其他内容),它将抛出404,因为找不到默认文件

编辑:如果找不到,它将尝试列出内容。我的错。如果不允许目录列表,则可能会显示错误代码。要关闭目录列表查找选项,请执行以下操作:

您的重写规则似乎希望以不同的顺序执行相同的操作。如果您请求
http://host.com/a
a
不是文件或目录(根据条件),它将转到
index.php
。。如果
index.php
不存在,那么它将循环直到服务器捕获它,因为您没有检查它。因此,这意味着第二组条件不起任何作用,因为要么
index.php
存在,要么它不存在,除非它存在,否则下一组条件可能不会真正达到

您需要决定如何区分这两个(
/blog/
用于
blog.php
/
用于
index.php
或其他内容),并将其中一个设置为默认设置。如果你想随机化,我建议你通过PHP来实现

。。要通过htaccess从root重定向到/forums/请尝试以下操作:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/forums/
RewriteRule ^(.*)$ /forums/$1 [L]

非常感谢您的回复和帮助。我读了一遍又一遍的链接,但无法让永久链接与论坛的mod_重写一起工作。我们现在已将论坛移到文件夹names/forums/中以解决此问题,但您是否知道我们可以从url中删除/forums/的方法?@user1310004我更新了底部的答案以显示重定向到论坛,但这并不是原始问题的一部分。你知道有两个默认文件会让人困惑吗?应该加载哪一个,服务器应该如何区分差异?一个应该是根的默认值,另一个应该是其他条件的默认值。这就是我想表达的意思。嗨。再次感谢您抽出时间。是的,我理解你的意思,但是我找不到一个方法来告诉服务器哪个是论坛重写规则(index.php),哪个是wordpress permalinks(blog.php)。所以我们看了另一个选择。理想情况下,由于SEO原因,我们希望在根目录中使用opiginal。你知道我们如何告诉服务器哪个是哪个吗?对所有的问题和缺乏这方面的知识表示歉意。非常感谢您的帮助和时间。如果您告诉服务器,必须通过url或查询字符串。您可以使用一个作为默认值(index.php),因此当输入“host.com”或“www.host.com”或带有斜杠时,将调用“index.php”。另一个(blog.php)可以是子域“blog.host.com”(或另一个域“other.com”),但如果您想通过另一个域调用某些内容,则可能会导致问题(而不是无法解决的问题)。另一个是一个单独的文件夹
host.com/b/
或其他东西,或者您可以使用查询字符串。无论哪种方式,您都需要某种方式告诉服务器指向哪个文件。