0

残念ながらここで立ち往生しています。クリーンURLのhtaccessリダイレクトを行いました。しかし、既存のディレクトリに対応するパスがあると、バックスラッシュが追加され、非常に煩わしく、スクリプトでエラーが発生していました。

そこで、DirectorySlashオプションをOffに変更すると、問題が美しく修正されました。はい、セキュリティ警告と非アクティブ化されたインデックスを認識しています。

今、私の大きな問題は次のとおりです。REQUEST_URIが空であるため、末尾のスラッシュなしでWebサイトへのパスを入力すると、index.phpにリダイレクトできません。

したがって、「www.my-website.com/」は機能しますが、「www.my-website.com」は機能しません。

「REQUESTが空かどうかを検出するだけだ」と思いました。何も起こりません。または、サブフォルダに対してのみディレクトリスラッシュをオフにすることができますか?何時間も検索した後、次のことが機能することがわかりましたが、URLをハードに書き込む必要があり、それは本当に最適ではありませんでした

Options +FollowSymlinks
RewriteEngine on
  #prevent from weird bug if path is a directory
DirectorySlash Off

  # add the trailing slash to root directory
  # THIS IS WHERE I NEED A VARIABLE PATH THAT I DON'T NEED TO CHANGE MANUALY
RedirectMatch ^/?([^\.\/]+)$ http://my-fixed-url.com/$1/

  # Don't show directory indexes (the listing of files)
Options -Indexes -MultiViews

  # as long is it isn't an existing file
RewriteCond %{REQUEST_FILENAME} !-f

  # Then redirect to index.php with the param "path" set to the url
RewriteRule ^([a-zA-Z0-9\_\-\/\.]+)$ index.php?path=$1 [QSA]

どんな助けでも深く感謝します!

4

1 に答える 1

0

を に変更するだけ+*、この「空の」URL にも一致します。そう:

RewriteRule ^([a-zA-Z0-9\_\-\/\.]*)$ index.php?path=$1 [QSA]
于 2012-08-28T21:34:41.473 に答える