2016-11-16 18 views
1

私のウェブサイトでは、mod_rewriteを2つ使用しようとしています。mod_rewriteとRewriteRuleの内部サーバーエラー

まず、私は (例:website.com/about.phpが website.com/about です) .. URLで.phpのファイル拡張子を非表示にすると、私はこれだけを持っています正しく動作します。

しかし、私はまた、より多くのSEOフレンドリーにするために、クエリと引数を持つURLを簡素化したいと思います。 (例:website.com/work/item.php?id=item-slugwebsite.com/work/item-slugなり)

これは、これまでのところ、私の.htaccessファイルです、しかし、そのは*.がコンパイルできない無効な正規表現であるため、あなたは500エラーを取得している...私に

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME}.php -f 
    RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L] 

    # Interpret "work/(ARG)" as "work/item.php?id=(ARG)" 
    RewriteRule ^work/(*.)$ work/item.php?id=$1 [L] 
</IfModule> 
+0

「website.com/work/item.php?id=item-slug」を「website.com/work/item-slug」に変換してもよろしいですか?私は、あなたは "website.com/work/item/item-slug"がほしいと思う。 –

答えて

2

を内部サーバーエラーを与えます。さらに、最後の書き換えルールからファイル/ディレクトリをスキップする必要があります。

Options -MultiViews 
RewriteEngine On 
RewriteBase/

# Interpret "work/(ARG)" as "work/item.php?id=(ARG)" 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^work/([\w-]+)/?$ work/item.php?id=$1 [L,QSA,NC] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
+1

ありがとう!完璧に働いた:) – Splycd