url重写不在php中读取
我是url重写的初学者,我从各种渠道学习过。到目前为止,一切似乎都在运行,但这根本不起作用 我的htaccess文件中有这行代码url重写不在php中读取,php,.htaccess,url-rewriting,Php,.htaccess,Url Rewriting,我是url重写的初学者,我从各种渠道学习过。到目前为止,一切似乎都在运行,但这根本不起作用 我的htaccess文件中有这行代码 RewriteRule ^notice/all/page/([0-9]+)/?$ files/all_notice.php?show=all&page=$1 [NC,L] 这是我正在访问的url http://localhost/notice/all/page/1 在php中读取这样的变量时- <?php $type=$_GET['show'];
RewriteRule ^notice/all/page/([0-9]+)/?$ files/all_notice.php?show=all&page=$1 [NC,L]
这是我正在访问的url
http://localhost/notice/all/page/1
在php中读取这样的变量时-
<?php
$type=$_GET['show'];
$page=$_GET['page'];
echo $type.'--'.$page;
?>
我得到了显示变量的原样,但我得到的不是页码,而是通知。
出什么问题了?试试这个:
RewriteRule ^notice/all/page/([0-9]+)?$/ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1/
RewriteRule ^notice/all/page/([0-9]+)?$ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1
RewriteRule ^notice/all/page/([0-9]+)/?$ /files/all_notice.php?show=all&page=$1 [L]
在/
之后有?$
,但应该在regex类之后,请尝试以下操作:
RewriteRule ^notice/all/page/([0-9]+)?$/ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1/
RewriteRule ^notice/all/page/([0-9]+)?$ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1
RewriteRule ^notice/all/page/([0-9]+)/?$ /files/all_notice.php?show=all&page=$1 [L]
您在
/
之后有?$
,但它应该在regex类之后您的重写规则是这样的:
RewriteRule ^notice/all/page/([0-9]+)/?$ files/all_notice.php?show=all&page=$1 [NC,L]
试试这个:
RewriteRule ^notice/all/page/([0-9]+)?$/ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1/
RewriteRule ^notice/all/page/([0-9]+)?$ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1
RewriteRule ^notice/all/page/([0-9]+)/?$ /files/all_notice.php?show=all&page=$1 [L]
唯一的区别是在文件前面添加了一个/
,并删除了NC
,因此它只是[L]
编辑:如果您将$1
更改为$2
,$3
甚至$4
以查看是否传递了这些值,那么您应该看看会发生什么。您的重写规则是:
RewriteRule ^notice/all/page/([0-9]+)/?$ files/all_notice.php?show=all&page=$1 [NC,L]
试试这个:
RewriteRule ^notice/all/page/([0-9]+)?$/ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1/
RewriteRule ^notice/all/page/([0-9]+)?$ files/all_notice.php?show=all&page=$1 [NC,L] //for urls like localhost/notice/all/page/1
RewriteRule ^notice/all/page/([0-9]+)/?$ /files/all_notice.php?show=all&page=$1 [L]
唯一的区别是在文件前面添加了一个/
,并删除了NC
,因此它只是[L]
编辑:如果将$1
更改为$2
,$3
甚至$4
以查看是否传递了这些值,您可能应该看看会发生什么。您访问的url是什么?@JanakaRRajapaksha您在那里捕捉到整数,这意味着显示的规则不能这样做。您访问的url是什么?@JanakaRRajapaksha如果您在那里捕获整数,这意味着所显示的规则不能做到这一点。我应该拥有all_notice.php文件的完整路径吗?它在root/files/all_notice.phpIs中添加^
或/
在文件/…
之前修复它吗?我为localhost/notice/all/page/1/
编辑了答案第一条规则,为localhost/notice/all/page/1
编辑了第二条规则规则给出404,第二个规则再次给出“通知”除了页码,我应该拥有all_notice.php文件的完整路径吗?它在root/files/all_notice.phpIs中添加^
或/
在files/…
之前修复它?我编辑了localhost/notice/all/page/1/
的答案第一条规则,第二条规则是localhost/notice/all/page/1
第一条规则是404第二条规则是再次发出“通知”而不是页码。我仍然收到“通知”而不是页码。你能建议其他方式吗this@sid尝试将$1
设为$2
,$3
&这样。page=$4会起作用,因为([0-9]+)
位于^notice/all/page/([0-9]+)的第四位/
@JakeGould很抱歉打扰你,现在我明白你的意思了,为什么没有列出。我仍然收到“通知”而不是页码。你能建议其他方法吗this@sid尝试将$1
设为$2
,$3
&这样。页面=$4将起作用,因为([0-9]+)
位于^notice/all/page的第四位/([0-9]+)/
@JakeGould很抱歉打扰你,现在我明白你的意思了,为什么没有列出它。