1

私はubuntu LAMPを使用しており、mod_rewriteを使用して次のようなURLを変換しようとしています:

  • site/XXX から site/XXX.php および
  • site/XXX-YYY から site/XXX.php?sub1=YYY

私はこの書き換えルールを使用しました:

RewriteRule ^([a-zA-Z0-9]+)$ ./$1.php
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2

私のOSXのローカルでは正常に動作します.とにかく、ubuntuサーバーに.htaccessをアップロードすると、site/testを呼び出してsite/test.phpに到達できませんが、404を取得します.Mod_rewriteは機能しています.実際、404ページは同じ .htaccess に設定して動作します。ローカルでは、これをフォルダーで使用しました: localhost/myfolder/.... リモートでは、サブドメインのルートを使用しています: app.sitename.com/....

誰かが私を助けることができますか?

これは完全なコードです:

RewriteEngine On
RewriteRule ^altro&(.+)? ./altro.php?$1 [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)$ ./$1.php [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2&sub2=$3
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ ./$1.php?sub1=$2&sub2=$3&sub3=$4
RewriteRule ^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9_]+).([a-zA-Z]+)$ ./server/php/files/$1/$2/$3/$4.$5

最初のディレクティブが機能しています! 実際、site/altro&code は altro.php?code を開きます

4

2 に答える 2

1

多分これはデバッグに役立ちます:

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3

ソース: Apache mod_rewrite をデバッグする方法

(これを .htaccess に入れることはできません。VirtualHost 構成に入れる必要があります。)

于 2013-10-22T18:37:18.303 に答える
0

このコードを試すことができますか:

RewriteEngine On

RewriteRule ^([a-zA-Z0-9]+)/?$ $1.php [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)/?$ $1.php?sub1=$2 [L,QSA]

完全な .htaccess コード:

Options +FollowSymLinks -MultiViews

RewriteEngine On

RewriteRule ^altro&(.+) altro.php?$1 [L,QSA,NC]
RewriteRule ^([a-zA-Z0-9]+)$ $1.php [L]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3 [L,QSA]
RewriteRule ^([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)-([a-zA-Z0-9]+)$ $1.php?sub1=$2&sub2=$3&sub3=$4 [L,QSA]
RewriteRule ^([a-z]+)-([a-z]+)-([0-9]+)-([a-zA-Z0-9_]+).([a-zA-Z]+)$ server/php/files/$1/$2/$3/$4.$5 [L,QSA]
于 2013-10-22T18:37:32.947 に答える