4

我想从以下位置重写我的网址:

http://mysite.com/index.php?node=home&photoID=10

至:

http://mysite.com/home/10

目前,仅

http://mysite.com/home

我用

RewriteRule ^([^/]*)$ index.php/?node=$1 [L]

但是当我尝试使用

RewriteRule ^([^/]*)/([^/]*)$ index.php/?node=$1&id=$2 [L]

它似乎没有正确加载我的页面,页面没有样式或任何东西。

(另外,我的 .htaccess 文件的顶部有:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

如果我只是去 mysite.com/home 它显示 404 not found。如果不总是有子页面,我该怎么做?

4

2 回答 2

3

首先是让你的 .htaccess 规则像这样:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/?$ index.php/?node=$1&id=$2 [L,QSA]

RewriteRule ^([^/]+)/?$ index.php/?node=$1 [L,QSA]

然后确保将这一行添加到页面顶部的<head>and之间</head>

<base href="http://mysite.com/">
于 2012-08-24T09:25:23.723 回答
0

您需要添加一个<base>标签,让您相对 URL 知道 URI 基在哪里。由于您已将 URI 路径从 更改/home/home/10,因此相对链接的基础变为/home. 您需要将此添加到页面的标题中:

<base href="/">
于 2012-08-24T02:34:17.817 回答