0

.htaccess mod_rewrite に問題があります。シンプルなカスタム CMS を作成し、これをドメインのサブ ディレクトリに配置しました。http://www.example.com/cms

次のような状況があります。

cms/index.php?page=modules/pages/index.php cms/modules/pages/indexに変換

および cms/index.php?page=modules/pages/edit.php?id=1 cms/modules/pages/edit/ 1に変換します

サブドメインで動作していますが、example.com/cms を使用すると何もしません

この .htaccess を作成しましたが、動作させることができませんでした...

RewriteEngine On
Options +FollowSymlinks
RewriteBase /


RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]



RewriteRule ^(.*?)$ $1 [L]

RewriteRule ^/cms/([^/]*)/$ cms/index.php?page=$1 [L,QSA]
RewriteRule ^/cms/([^/]*)$ /cms/index.php?page=$1 [L,QSA]
RewriteRule ^/cms/pages/([^/]*)/$ /cms/index.php?page=pages/$1 [L,QSA]
RewriteRule ^/cms/pages/([^/]*)$ /cms/index.php?page=pages/$1 [L,QSA]
RewriteRule ^/cms/modules/([^/]*)/([^/]*)/$ /cms/index.php?page=modules/$1/$2 [L,QSA]
RewriteRule ^/cms/modules/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2 [L,QSA]
RewriteRule ^/cms/modules/([^/]*)/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2&id=$3 [L,QSA]
4

1 に答える 1

0

これが htaccess ファイルにある場合、URI のプレフィックス (先頭のスラッシュ) が削除されているため、これらのパターンは何にも一致しません。パターンから先頭のスラッシュを削除するか、オプションにします ( を使用?):

RewriteRule ^/?cms/([^/]*)/$ cms/index.php?page=$1 [L,QSA]
RewriteRule ^/?cms/([^/]*)$ /cms/index.php?page=$1 [L,QSA]
RewriteRule ^/?cms/pages/([^/]*)/$ /cms/index.php?page=pages/$1 [L,QSA]
RewriteRule ^/?cms/pages/([^/]*)$ /cms/index.php?page=pages/$1 [L,QSA]
RewriteRule ^/?cms/modules/([^/]*)/([^/]*)/$ /cms/index.php?page=modules/$1/$2 [L,QSA]
RewriteRule ^/?cms/modules/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2 [L,QSA]
RewriteRule ^/?cms/modules/([^/]*)/([^/]*)/([^/]*)$ /cms/index.php?page=modules/$1/$2&id=$3 [L,QSA]

さらに、最初のルールは次のように単純化できます。

RewriteCond %{REQUEST_FILENAME} -f [NC,OR]
RewriteCond %{REQUEST_FILENAME} -d [NC]
RewriteRule ^ - [L]
于 2013-05-08T21:28:21.773 に答える