1

modrewrite を使用して、次のようなクリーンな URL を取得したいと考えています。

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

することが:

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

そして、3つのレイヤーに入ります。私はこれを書きましたが、まったく機能しません:

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 パラメータを追加することです。

/ページ/画像/bg.jpg

それよりも:

/images/bg.jpg

何か案は?

4

1 に答える 1

1

既存のものをこれに置き換えます:

# 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 に答える