.htaccess 多 URL 重写

Posted

技术标签:

【中文标题】.htaccess 多 URL 重写【英文标题】:.htaccess multi URL rewriting 【发布时间】:2012-10-03 08:45:52 【问题描述】:

我有这个规则:

RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ profil.php?upime=$1

它正在工作。现在我想知道如何重写另一个页面的URL:

RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ profil.php?upime=$1
RewriteRule ^(.*)$ novica.php?nid=$2 - I did this, but is not working.

我该怎么做才能在一个.htaccess 文件中同时拥有这两个规则?

【问题讨论】:

【参考方案1】:

在重写所有内容时,您不能像示例中那样做:^(.*)$

如果您需要两个不同的规则,则需要选择要写入的最终目的地的 url。

一个例子,你重写以不同字符串开头的不同 url 到不同的目的地:

RewriteEngine On

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^starts_with_this(.*)$ profil.php?upime=$1

RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^starts_with_something_else(.*)$ novica.php?nid=$1

【讨论】:

但是我必须在你写starts_with_this和starts_with_something_else的地方写什么? @user1726756 这取决于您希望您的网址是什么样子,例如可以是profil/novica/。顺便说一句,您可以以第三条规则结束,该规则会重写尚未重写的所有其他内容。 但是等等——如果我写例如profil/novica/,那么我的css设计就不起作用了——我需要创建一个文件夹profil/novica/然后复制内部设计? @user1726756 有不同的方法,但我总是为我的资产(图像、css、js)使用绝对路径来避免这个问题。 @user1726756 不客气。如果对您有用,请不要忘记将答案标记为已接受。

以上是关于.htaccess 多 URL 重写的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 多 URL 重写

如何在apache中重写url

虚拟主机.htaccess伪静态(URL重写)建立多站点

.htaccess:使用 RewriteCond 但对 IMAGES/JS/CSS 文件的hrefs仍然被不必要地重写[重复]

url重写.htaccess的问题

.htaccess 重写一个 url,而不是另一个