我有一个liitle mod_rewrite问题。
我有index.php(在根目录中),其中包含简单的href链接:
<a href="novice/this-is-something">Novice</a>
当我点击Novice时,将我重定向到novice.php文件(这是mod_rewrited,在网址中看起来不像 novice.php?query = this-is-something ,但看起来很像喜欢新手/这是什么(这是我的查询))问题是,当我试图在novice.php文件中获取“this-is-something”查询时。
我在novice.php文件中得到了这样的查询:
if (isset($_GET['query'])){
$query=$_GET['query'];
echo $query;
}else{
echo 'Null parameters.';
}
但它只输出0
但当我在href链接中传递数字时,就像那样:
<a href="novice/2131">Novice</a>
novice.php文件中的输出是正确的:2131
我的.htaccess代码就像那样:
RewriteRule ^novice/([^/\.]+)/?$ novice.php?query=$1 [L]
那么我在mod_rewrite中做错了什么,我可以通过$ _GET方法得到数字,但我不能通过$ _GET得到字符串或字符串?
答案 0 :(得分:0)
我自己找到了解决方案。
我刚刚在RewriteRule结束时更改了“查询”字样^ / novice /([^/.]+)/?$ novice.php?查询 = $ 1 [L]
到
“blabla”字 - &gt; RewriteRule ^新手/([^ /。] +)/?$ novice.php? blabla = $ 1 [L]
然后工作一切......很奇怪......
if (isset($_GET['blabla'])){
$blabla=$_GET['blabla'];
echo $blabla;
}else{
echo 'Null parameters.';
}
它回显现在参数这是什么东西 ..但仍然不知道是什么问题..我刚刚更改了变量名称“查询“其中包含参数” this-is-something “..
如果有人感兴趣的话:我的.htaccess看起来像这样:
Options +FollowSymLinks
RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://localhost/local_ageo.si/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://localhost/local_ageo.si/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
RewriteRule ^novice/([^/\.]+)/?$ novice.php?blabla=$1 [L]