2016-11-08 22 views
0

.htaccessファイルに入れるスクリプトがたくさんあり、私が望むやり方で正確に作業したことをメモしました。.htaccess URLから.php拡張子を削除しない

たとえば、私のhtdocsフォルダにtest.phpという名前のファイルがあり、localhost/test.phpに行った場合、ファイルをブラウザのlocalhost/testとして書きたいと思っています。

これを行う2つの.htaccessファイルが見つかりました。下に示しましたが、フォームを使用してデータをMYSQLデータベースに挿入しようとすると、常に空白のフィールドが表示されます。

これは、これは私がに行ってきました昨日、その後時間と時間を探した後、私は、まさに魔法のように働いていたいくつかのスクリプトを見つけ秒1

# Turn on the rewrite engine 
RewriteEngine on 
# If the request doesn't end in .php (Case insensitive) continue processing rules 
RewriteCond %{REQUEST_URI} !\.php$ [NC] 
# If the request doesn't end in a slash continue processing the rules 
RewriteCond %{REQUEST_URI} [^/]$ 
# Rewrite the request with a .php extension. L means this is the 'Last' rule 
RewriteRule ^(.*)$ $1.php [L] 

ある

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NC] 

## To internally redirect /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L] 

最初の1

ですシャワーが戻って来て、彼らは働いていなかった。 (私は古い.htaccessファイルを削除し、新しいファイルを作成し、mysqlとapacheを再起動し、ブラウザのデータを消去しました.htaccessはまだ動作しませんでした)、シャワーを浴びる前に、

は、これらの2は今、彼らは場合にのみ機能(ノー私は同時に、.htaccessファイルでそれらの両方を入れていない)ので、

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteRule ^([^\.]+)$ $1.html [NC,L] 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

秒1

# Options is required by Many Hosting 
Options +MultiViews 

RewriteEngine on 

# For .php & .html URL's: 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
RewriteRule ^([^\.]+)$ $1.html [NC,L] 

を前に働いていたI手動でURLから.phpを削除しますが、そのようにするのは嫌いです。あるいは、phpドキュメントのすべてのリンクを.php拡張子から手動で変更したくないので、どちらか一方を使いたいと思っています。フォームを使用してMYSQLにデータを挿入すると、実際にデータが表示され、フィールドはb渇望

localhost/test.phpが末尾にスラッシュを追加したので、localhost/test /となりましたが、これはもう一度動作しませんでしたが、 MYSQLデータベースには、フィールドも空白です。

# Apache Rewrite Rules 
<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 
    RewriteBase/

# Add trailing slash to url 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$ 
    RewriteRule ^(.*)$ $1/ [R=301,L] 

# Remove .php-extension from url 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^([^\.]+)/$ $1.php 

# End of Apache Rewrite Rules 

私は、私が発見し、彼らはになっていたが、今、彼らは働いていない正確にどのように働いていたもののノートを作っ言ったように、誰もがなぜ知っているのですか?または私が欲しいものを正確に達成するためにそれらを微調整する方法?私は文字通り、修正を探していた過去の日を過ごしました。 Btw私はWindows 7上でXAMPPを使用しています

+0

TLDRですが、あなたは 'RewriteRule'sのための' QSA'フラグを探しているように点灯して聞こえます。 – arkascha

答えて

0

書き換え時に、送信されたURLはあなたのスクリプトの呼び出しに使用されたものではありませんが、依然としてオリジナルにアクセスできます。 index.phpでは、?$_SERVER['REQUEST_URI']を爆発、最初の項目は、あなたのパスと(存在する場合)第二にparse_str($exploded[1], $_GET);

+0

ねえ、もう少し説明できますか?私はかなり理解していません –

+0

これは、元の、改ざんから呼び出されたPHPスクリプトで壊れていない '$ _GET'変数を取得する方法です。これは 'index.php'である必要はありません。あなたはincludeでこれを行うことができ、各ページのphpファイルが呼び出すことができます。 – Walf

関連する問題