[英]Apache Mod-Rewrite Question
我在名為blog的文件夾中有一個名為index.php的PHP腳本。 有三種不同的觀點。
我想根據URL更改視圖。
現在,我有以下mod_rewrite規則。
RewriteRule ^blog$ blog/index.php [L]
RewriteRule ^blog/(.+)/(.+)$ blog/index.php?post=$2 [L]
RewriteRule ^blog/(.+)$ blog/index.php?tags=$1 [L]
這不起作用,我不確定為什么。 現在,它總是重定向到最后一個URL:
blog/index.php?tags=$1
GET數據包含“ index.php”。
另外,如果在最終規則中添加正斜杠,如下所示:
RewriteRule ^blog/(.+)/$ blog/index.php?tags=$1 [L]
所有重定向工作正常。 問題是,我需要有在URL的結尾斜杠,如果我想在分類視圖。
有什么想法嗎? 我該如何解決?
感謝您的答復。 我發現我的問題是將腳本放在名為“ blog”的文件夾中的副作用。 這是index.php的樣子:
<?php
define ('BASE_PATH', "../blog/");
include_once(BASE_PATH . 'controller/Controller.php');
$controller = new Controller();
$controller->invoke();
看到問題了嗎? 因為我腳本的基本路徑是“博客”,所以mod_rewrite正在重寫程序中的所有引用。 通過將我的腳本文件夾重命名為blogScript,它解決了該問題。
在正則表達式中, .
匹配任何字符(包括/
字符),因此請嘗試執行^blog/([^/]+)$
來匹配/
以外的任何字符。
您可以編寫如下。
RewriteRule ^blog/?$ blog/index.php [L]
RewriteRule ^blog/(.+?)/(.+?)/?$ blog/index.php?post=$2 [L]
RewriteRule ^blog/(.+?)/?$ blog/index.php?tags=$1 [L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.