URL使用参数和php查询重写

时间:2017-06-06 12:40:42

标签: apache .htaccess mod-rewrite url-rewriting friendly-url

目录:   eventfinder 是项目文件夹

  • 本地主机
    - project1
    - project2
    - eventfinder
    --- .htaccess

用户来到页面http://localhost/eventfinder/并在/ eventfinder /

之后键入'randomevent123'

然后php查询发生在?event = 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] 

但查询无效。

2 个答案:

答案 0 :(得分:2)

尝试以下内容:

  1. 确认已加载mod_rewrite
  2. 检查AllowOverride是否允许htaccess解析
  3. 以下规则(在eventfinder目录内):

    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] 
    

答案 1 :(得分:0)

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

您可以!-f!-d检查所请求的文件名,以确保所输入的网址一个文件且在重写之前的目录 - 它会阻止index.php

上的递归循环