1

基本的にはURLを書き換えたいのですが、書き換えるwebsite.com/folder/必要がある場合もありますwebsite.com/folder/page/

現在、私はそれだけで動作していwebsite.com/folder/ますが、ページがあるかどうかを確認することはできません。フォルダーの下に別のルールを作成すると、そのルールが読み取られ、空のページ var が返され、php が壊れます。私は .htaccess に苦労しており、助けていただければ幸いです。

これは、フォルダーだけで機能するものですが、ページを含めることはできません。

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|docs)/
RewriteRule ^([^/]*)/$ /?folder=$1 [QSA]

これは、フォルダーのみ、またはフォルダーとページのいずれかで動作するようにしようとしたものです

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/$ /?folder=$1 [QSA]

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/([^/]*)/$ /?folder=$1&page=$2 [L,QSA]

助けてください!

4

1 に答える 1

1

RewriteRule docsに従って、ルールセットのルールの順序を逆にする必要があります。構成では両方のルールが同じRewriteCondであるため、最も具体的なルール (フォルダー + ページ) を一番上にし、最も一般的なルールを最後にする必要があります。そうでない場合、最初のルールが一致したときに URL が書き換えられ、2 番目のルールが一致することはありません。また、おそらく、フォルダー + ページ ルールのパターンの末尾のスラッシュを削除したいでしょう (パターンの 2 番目のグループがフォルダーではなくページに一致すると仮定します)。したがって、すべてを読む必要があると思います:

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/([^/]*)$ /?folder=$1&page=$2 [L,QSA]

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/$ /?folder=$1 [L, QSA]
于 2012-12-18T07:05:40.393 に答える