Php prettyurl我无法打印该值
我正在尝试使用漂亮的url。但它将转到404.php 我不知道我的.htaccess有什么问题。我对这个漂亮的URL很陌生 .htaccessPhp prettyurl我无法打印该值,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我正在尝试使用漂亮的url。但它将转到404.php 我不知道我的.htaccess有什么问题。我对这个漂亮的URL很陌生 .htaccess RewriteEngine on RewriteRule ^([0-9]+)/$ test.php?id=$1 # not a file RewriteCond %{REQUEST_FILENAME} !-f # not a directory RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .? /
RewriteEngine on
RewriteRule ^([0-9]+)/$ test.php?id=$1
# not a file
RewriteCond %{REQUEST_FILENAME} !-f
# not a directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .? /404.php [L]
在我的test.php中
if(isset($_GET['id'])){
$id = $_GET['id'];
echo $id;
}
下面是我test.php中的唯一代码
if(isset($_GET['id'])){
$id = $_GET['id'];
echo $id;
}
但它不是印刷品
我像这样指向我的浏览器
http://localhost/myprojectfolder/test/1
我的项目结构
myporjectfolder
- index.php
- .htaccess
- test.php
提前谢谢你。我想你有几个问题。您指向的是
http://localhost/myprojectfolder/test/1
但您的规则中没有/test
。你只能接受数字。另外,您没有在URL的末尾使用斜杠,但是您的规则说它应该在那里,因此也不会匹配,除非您将其设置为可选
您还将不存在的文件定向到404.php。好吧,你正在尝试做的漂亮的URL也是不存在的文件。所以这可能会引起问题
无论如何,对于这样的URL,用这种方式尝试您的规则
或者删除似乎不必要的/test文件夹
不清楚你问什么。。。如果重写按预期进行,则在内部使用
$\u GET['id']
参数调用脚本test.php
。你可以用正常的方式使用它…但是为什么不打印1呢?那么很明显,重写没有按预期的方式工作。。。文件夹层次结构中的.htaccess
样式文件在哪里?还要确保您没有遇到缓存问题,在浏览器中进行深度重新加载或完全禁用缓存以进行测试…该.htaccess与index.php和test.phpit一起位于myrpojectfolder内,将执行404.php“或删除看起来不必要的/test文件夹”,test不是一个文件夹,它是一个php文件,但您正在URL中使用它,因此您的规则将不匹配,除非您将其添加到重写规则中。参见我的第一个示例。您不需要在URL中进行测试,因此我给出了第二个示例。非常感谢您,它现在可以运行您的两个示例,我现在明白了,但是什么是[L]它是必要的?没问题。是的,我建议始终使用L
,这样当规则匹配时,它将在匹配后停止处理规则。如果增加了更多的规则,冲突的可能性就会降低。我可以问一下,如果我也有像account.php、members.php、admin.php这样没有querystring的php文件,我如何在浏览器中执行它们?我试着这样做,但我找不到404。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/?$ test.php?id=$1 [L]