2017-06-06 8 views
3

ディレクトリ: - project1に
- のProject2
- eventfinderがローカルホスト
URLパラメータとPHPクエリーリライト

  • プロジェクトフォルダであるeventfinder
    --- .htaccessファイル

ユーザーが来る電子ページhttp://localhost/eventfinder/とタイプ 'randomevent123' データベース

から/ eventfinder/

その後、PHPクエリはとどうなりますか?イベント= randomevent123

$event = $_GET['event']; 

$stmt = $conn->prepare("SELECT * FROM events WHERE name = :name"); 
$stmt->bindParam(":name", $event); 
$stmt->execute(); 

とリターンのデータの後に私は私のURLが、私の書き換えをしようとしています...問題が何であるかを

http://localhost/eventfinder/index.php?event=randomevent123 

を理解していません.htaccessの

RewriteEngine On 
RewriteRule ^([^/]*)$ /index.php?event=$1 [L] 

しかし、クエリで

http://localhost/eventfinder/randomevent123 

は動作しません。

+0

'RewriteRule^eventfinder /([^ /] +)/?$ /index.php?event=$1 [L]'あなたは現在/ eventfinder/'を考慮していません。 – CD001

+0

@ CD001あなたが提案したものを変更しても何も起こらなかった – Troutfisher

+1

'RewriteEngine On RewriteRule^eventfinder /([^ /] *)$ /eventfinder/index.php?event=$1 [L]' –

答えて

2

次試してみて:

  1. mod_rewriteAllowOverrideは(eventfinderディレクトリ内)
  2. 次のルールを解析htaccessをすることができます

  3. チェックすることをロードされていることを確認します。

    RewriteEngine On 
    RewriteBase /eventfinder/ 
    
    RewriteCond %{THE_REQUEST} ^GET\ /eventfinder/index\.php\?event=([^\s&]+) [NC] 
    RewriteRule ^index\.php$ %1 [R,L,QSD] 
    
    RewriteRule ^(?!index\.php([^/]+))$ index.php?event=$1 [L] 
    
+0

私はこれらの設定をhttpdから変更しました。confとapacheを再起動し、まだ動作しません。 のLoadModule rewrite_module libexecに/ apache2の/ mod_rewrite.so 私は 'AllowOverride'があなたの' DOCUMENT_ROOTのディレクトリのために有効にする必要があります@Troutfisherすべて はすべて許可され Apacheバージョン2.4.25 – Troutfisher

+0

を要求 AllowOverrideのを変更'。私は確かにそれが '/'ではないことを願っています。 – hjpotter92

0
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ /eventfinder/index.php?event=$1 [L] 

あなたは私たち!-fと要求されたファイル名を!-dチェックが入力中のURLがないファイルとないそのものを書き換えを行う前に、ディレクトリであることを確実にすることができます - それはindex.php

に再帰ループを防止します