2017-06-06 92 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

递归循环