Apache 使用参数和php查询重写URL
目录: eventfinder是项目文件夹Apache 使用参数和php查询重写URL,apache,.htaccess,mod-rewrite,url-rewriting,friendly-url,Apache,.htaccess,Mod Rewrite,Url Rewriting,Friendly Url,目录: eventfinder是项目文件夹 本地主机 --项目1 --项目2 --eventfinder ---.htaccess 用户来到页面并在/eventfinder之后键入“randomevent123”/ 然后php查询使用?event=randomevent123进行 $event = $_GET['event']; $stmt = $conn->prepare("SELECT * FROM events WHERE name = :name"); $stmt->b
- 本地主机
--项目1
--项目2
--eventfinder
---.htaccess
$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
到
使用.htaccess
RewriteEngine On
RewriteRule ^([^/]*)$ /index.php?event=$1 [L]
但是查询不起作用。请尝试以下方法:
mod_rewrite
eventfinder
目录中):
你可以告诉我们
-f
和-d
在重写之前检查请求的文件名,以确保正在键入的URL不是文件,也不是目录-它防止在index.php
重写规则^eventfinder/([^/]+)/?$/index.php?event=$1[L]上出现递归循环
您目前没有考虑到/eventfinder/
。@CD001在重写规则^eventfinder/([^/]*)$/eventfinder/index.php?event=$1[L]^是的,我也错过了结果路径中的/eventfinder/
之后,什么也没有发生:\。。。除非/eventfinder
是一个实际的目录,并且.htaccess文件就位于这个目录中,否则我从httpd.conf更改了这些设置并重新启动了apache,但仍然无法工作。LoadModule rewrite_module libexec/apache2/mod_rewrite.so我更改了AllowOverride All Require All Require All allowed Apache version 2.4。25@Troutfisher需要为您的文档根目录激活AllowOverride
。我当然希望它不是/
。
RewriteEngine On
RewriteRule ^([^/]*)$ /index.php?event=$1 [L]
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]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /eventfinder/index.php?event=$1 [L]