0

サーバーエラーが発生する理由がわからないので、これには2番目の目が必要だと思います。

RewriteEngine On
RewriteRule ^Gig/([a-zA-Z0-9_-]+)$ gig.php
RewriteRule ^Gig/([a-zA-Z0-9_-]+)/$ gig.php
#allow non caps
RewriteRule ^gig/([a-zA-Z0-9_-]+)$ gig.php
RewriteRule ^gig/([a-zA-Z0-9_-]+)/$ gig.php

編集:

ログを確認しましたが、内部リダイレクトが多すぎることが原因です。私自身、mod_rewritesなどはあまり得意ではないので、よろしければご覧ください。

#redirect so home page shows /Home
Redirect /home.php http://localhost/Home

#add php extension
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

Redirect /home.php http://localhost/Home

# redirect to .php-less link if requested directly
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.*)\.php /$1 [R=301,L]

#redirect www to non-www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.^([a-zA-Z0-9_-]+)$ [NC]
RewriteRule ^(.*)$ http://^([a-zA-Z0-9_-]+)$1 [L,R=301]

#remove trailing slash
RewriteEngine on 
RewriteRule ^(.*)/$ /$1 [L,R=301]

#allow artistprofile nice url
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\-]+)/?$ artist_profile.php

#info nice url
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\-]+)/[Aa]bout/?$ artist_about.php

#gigs nice url
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\-]+)/[Gg]igs/?$ artist_gigs.php

#tracks nice url
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\-]+)/[Tt]racks/?$ artist_tracks.php

#gig nice url
RewriteEngine On
RewriteRule ^[Gg]ig/([a-zA-Z0-9_\-]+)/?$ gig.php

.htaccess ファイルの書き換えはこれだけです

編集: 問題はPHP拡張部分の追加です

#add php extension
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

([a-zA-Z0-9_-]+)ファイル名の後にあるためだと思います。

4

1 に答える 1

1

-文字が括弧内にある場合は、文字をエスケープする必要があります。コードを次のように短縮することもできます。

RewriteEngine On
RewriteRule ^[Gg]ig/([a-zA-Z0-9_\-]+)/?$ gig.php
# Escape it!                    ^^

なぜ、このように短縮できるのでしょうか。

  • [Gg]「文字Gまたはg」を意味します
  • /?/「 0回または1回繰り返す」ことを意味します
于 2013-05-29T11:19:47.653 に答える