2017-06-06 136 views
3

目錄: eventfinder是項目文件夾URL與參數和PHP查詢重寫

  • 本地主機
    - PROJECT1
    - 項目2
    - eventfinder
    ---的.htaccess

用戶來到TH Ë頁http://localhost/eventfinder/和後/ eventfinder類型「randomevent123」/

那麼PHP查詢情況與?事件= randomevent123從數據庫

我試圖重寫我的網址

$event = $_GET['event']; 

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

,並返回數據,但我不明白這是什麼問題...

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

http://localhost/eventfinder/randomevent123 

隨着的.htaccess

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

但查詢將行不通。

+0

'^重寫規則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_rewrite加載
  2. 檢查AllowOverride允許(內eventfinder目錄)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所有 要求所有授予 Apache的版本2.4.25 – Troutfisher

+0

@Troutfisher的'AllowOverride'需要你'DOCUMENT_ROOT的目錄被激活'。我當然希望它不是'/'。 – hjpotter92

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

您能給我們!-f與所請求的文件名!-d檢查,以確保多數民衆贊成在鍵入URL是文件和做重寫本身之前的目錄 - 它可以防止在index.php

遞歸循環