我正在尝试使用mod_rewrite apache模块重写URL。 我试着用它如下:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^wants/testing.htm wants.php?wantid=$1 [L]
我在访问文件的目录中创建了一个.htaccess文件。
还启用了mod_rewrite。 完成所有这些后,我仍然无法使其正常工作。
有人可以帮我这个吗?如果我错过了什么,请告诉我
先谢谢, Gnanesh
答案 0 :(得分:2)
根据OP的评论:
网址显示 mydomain.com/wants.php?wantid=123。一世 需要让它看起来像 mydomain.com/wants/123
这适用于您的情况:
RewriteEngine on
RewriteBase /
RewriteRule ^wants/([0-9]+)$ /wants.php?wantid=$1 [L]
它允许您使用 http://yoursite.com/wants/123 并默默地将其重写为 wants.php?wantid = 123
答案 1 :(得分:0)
我认为一个主要的斜线(或者说缺乏斜线)可能是yoru问题:
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^wants/testing.htm /wants.php?wantid=$1 [L]
否则Apache可能会在/wants/wants.php中查找PHP文件,因为它会将其视为相对URL。
答案 2 :(得分:0)
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^wants/\d+$ /wants.php?wantid=$1 [L]
但我想你也可以省去$ 1引用,但仍然可以访问wants.php
中的ID。所以
RewriteRule ^wants/\d+$ /wants.php [L]
也应该有效,然后您可以使用类似
的内容<?php
$request = split('/', $_SERVER["REQUEST_URI"])[1];
?>
在你的wants.php
数组的最后一个元素是你的id(或者你决定重写并发送到脚本的任何其他内容)。
答案 3 :(得分:0)
如果要在 want 目录中的.htaccess文件中使用该规则,则必须从模式的开头剥离上下文wants/
。所以只是:
RewriteEngine on
RewriteRule ^([0-9]+)$ /wants.php?wantid=$1 [L]
否则,如果要在根目录中的.htaccess文件中使用该规则:
RewriteEngine on
RewriteRule ^wants/([0-9]+)$ wants.php?wantid=$1 [L]