虚拟目录htaccess和url重写

时间:2015-11-14 15:51:37

标签: .htaccess mod-rewrite url-rewriting

我在php中有一个网站有一些页面:

www.example.com/news
www.example.com/people
www.example.com/music

在每个页面上都是内容概述。例如,如果您点击www.example.com/news上的链接,则会使用模板(www.example.com/article.php?url='example-of-article-url')打开包含该网址的文章

对于每个页面都需要重写。显示的网址应为www.example.com/news/example-of-article-url 这应该访问article.php文件。新闻目录是虚拟的。 www.example.com/news,www.example.com/people,www.example.com/music正在被此代码重写:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]

我一直在尝试的是:

RewriteRule ^news/(.*) article.php?url='$1' [R=301,L]

然而,当加载它时,css和图像不是。生成的内容是在/ news /目录中生成的,因此无法找到其他文件。由于SEO原因,我无法使用规范网址。

2 个答案:

答案 0 :(得分:1)

首先不要忘记在一开始就添加它:

RewriteEngine On

从' $ 1'中删除Qoutes你的最后一行,请尝试下面的方法。

RewriteEngine On
RewriteRule ^news/(.*)$ article.php?url=$1 [R=301,L]

要将整个目录的内容重定向到您所在的位置:

RewriteEngine On
RewriteRule ^news/(.*)$ article.php?url=$1 [R=301,NC,L]

或者你也可以这样做,在开始时使用斜杠:

将整个文件夹(新闻)重定向到新位置:

RewriteEngine On
RewriteRule ^/?news/(.*)$ article.php?url=$1 [R=301,L]

RewriteEngine On
RewriteRule ^/news/(.*)$ article.php?url=$1 [R=301,L]

要将整个目录的内容重定向到您所在的位置:

RewriteEngine On
RewriteRule ^/news/(.*)$ article.php?url=$1 [R=301,NC,L]

最好的运气

答案 1 :(得分:1)

你应该添加:

<base href="/"/>

<head>部分。