1

我想使用 modrewrite 给我干净的网址,例如:

http://www.mydomain.com/about/

成为:

http://www.mydomain.com/index.php?page=about

并进入三层。我写了这个,但它根本不起作用:

RewriteRule ^([^/\.]+)/?$ /index.php?page=$1 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ /index.php?section=$1&page=$2 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ /index.php?section=$1&subsection=$2&page=$3 [L]

我通过添加 print_r($_GET); 进行了测试 当我去的时候它是空的

mydomain.com/about/

编辑,让它工作。愚蠢的我,我在 index.php 之前不需要上面的“/”。

但是,现在它不会显示我的 CSS/图像。我添加了这个,但它仍然无法正常工作。

RewriteRule \.(css|jpe?g|gif|png)$ - [L]

它正在做的是将 url 参数附加到图像请求中,如下所示:

/page/images/bg.jpg

而不是:

/images/bg.jpg

有任何想法吗?

4

1 回答 1

1

Replace your existing with this:

# 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?section=$1&subsection=$2&page=$3 [L,QSA]

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

RewriteRule ^([^/]+)/?$ index.php?page=$1 [L,QSA]
于 2012-04-27T20:16:17.480 回答