bugfix> htaccess > 投稿

私の運命へようこそ。

これまでの私の問題は謎のようなものです。 ウェブサイトでオンラインで完全に機能しているが、ローカルホストでは機能していないルール。ルールはかなり単純ですが、血まみれの悪夢を解決するためのトリックは見つかりません。

私はこのようなURLを持っていますhttp://frostpath.lx/access/articles これは、このconfを持つWAMP localhost上の仮想ホストです。

<VirtualHost frostpath.lx>
  ServerName frostpath.lx
  ServerAlias frostpath.lx
  DocumentRoot "E:/Projects/frostpath"
  <Directory "E:/Projects/frostpath/">
    Options +Indexes +Includes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
</VirtualHost>

これまでのところうまくいくようで、サイトは稼働しており、CSSロード、スクリプト、すべてがとても良いです。 mod_rewriteがオンになっているので、オンラインで見つかったさまざまなスクリプトをチェックして再チェックしました。

しかし、獣は飽和していません。 .htaccess(問題はそこから来ていると思うが、誰が知っている-私は何時間も間違ったことに集中していたかもしれない)

RewriteEngine on
RewriteBase /
RewriteRule ^(access)$ access.php [NC,L]
RewriteRule ^(access)\/([^\.]+)$ access.php?$2 [NC,L]
RewriteRule ^(access)\/([^\.]+)\/([^\.]+)$ access.php?$2&start=$3 [NC,L]

基本的に、

http://frostpath.lx/access/articles これはaccess.phpにリダイレクトするだけで、記事は表示しません。

http://frostpath.lx/access?articles これは完璧に機能します。

しかし、「?」は必要ありません。が欲しい "/"。ルール.htaccessを遵守してください!

いろいろ試してみましたが、今のところ運はありません

/access.php?$2
/access?$2
/?access.php&$2

そして、スラッシュの有無にかかわらず上記すべて。正直言って、私はアイデアが不足しているので、ここで尋ねます。

また、ルールはindex.phpで機能していますが、別のコントローラーであるaccess.phpでは機能していません。マインドブローン。

では、私のルールの何が悪いのでしょうか?

絶望がゆっくりと私のキーボードを傷つけています。

回答 1 件
  • 次を使用できます。

    RewriteEngine on
    RewriteBase /
    RewriteRule ^access$ access.php [NC,L]
    RewriteRule ^access/([^.]+)/([^.]+)$ access.php?$1&start=$2 [NC,L]
    RewriteRule ^access/([^.]+)$ access.php?$1 [NC,L]
    
    

    前に記事ルールで。

    または、2番目のルールを変更します。

    RewriteRule ^access/([^./]+)$ access.php?$1 [NC,L]
    
    

    /は最初のグループに含まれているため、今のところ3番目のケースにも適用されるため

あなたの答え