【发布时间】:2016-12-30 20:10:38
【问题描述】:
大家好,想知道我是否可以挑选你的大脑并且尽可能描述性。
所以我正在尝试创建一个页面,该页面将根据用户选择的选择加载标题和类别(来自数据库的动态)
站点名称用作我的域名
为了更清楚一点,我有一个名为 sitename/2017/slot.php?gp=category&sn=title 的文件和变量
类别和标题存储在数据库中的每一行我想要做的是创建一个干净的 URL 看起来像这个 sitename/2017/slot/category/title/
因此,当查看像这样 sitename/2017/slot.php?gp=category&sn=title 这样的页面时,页面会加载所有内容并正确显示,并且正在设置变量,因为我可以在浏览器选项卡的标题中看到它们
当我使用 mod 重写使其干净时,我的错误出现了,一旦 .htaccess 已更改并上传,我导航到新的干净 URL sitename/2017/slot/category/title/ 它向我显示变量没有已设置,因为它们不再出现在浏览器的标题选项卡中,并且该页面也没有使用我的 CSS。下面我添加了我的 htaccess 规则,非常感谢任何帮助和反馈
#change this sitename/2017/slot.php?gp=category&sn=title
#to this sitename/2017/slot/category/title/
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^slot/([a-z-]+)/([a-z-]+)/ slot.php?gp=$1&sn=$2 [NC,L]
只是以防万一这是我在 slot.php 中使用的 php 代码,我正在连接到我的数据库,那里没有问题,并且在下面的代码运行 while 循环以获取用户单击的行的数据之后
p>if($_GET['gp'] && $_GET['sn']){
$gp = preg_replace('#[^a-zA-Z-]#i', '', $_GET['gp']);
$sn = preg_replace('#[^a-zA-Z-]#i', '', $_GET['sn']);
}
这是我的 htaccess 中的完整代码
#make custom page not found
#ErrorDocument 404 /filenotfound.php
#stop directory file listing in all folders
IndexIgnore *
#make pages have www. in them
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.org
RewriteRule ^(.*)$ http://www.example.org/$1 [R=permanent,L]
#change this slot.php?gp=category&sn=title
#to this sitename/2017/slot/category/title/
Options -MultiViews +FollowSymLinks
RewriteRule ^slot/([a-z-]+)/([a-z-]+)/ /2017/slot.php?gp=$1&sn=$2 [R=302]
【问题讨论】:
-
例如域请使用
example.com。sitename在这种情况下是模棱两可的,因为它可以被视为一个子目录。 (因此下面有些混乱。) -
@w3dk 我是新成员,它不允许我发布任何类型的域名,这就是我写问题时它告诉我的内容,所以不得不求助于网站名称
-
编辑器不允许您发布多个外部链接。要发布示例 URL,请将它们用反引号括起来(内联代码格式) - 如果采用这种格式,则没有限制。
-
@w3dk 好的,谢谢,请注意,以备将来参考
-
这个
.htaccess文件在哪里?您的代码暗示它在/2017子目录中(这是一个物理目录)?但是,到目前为止,答案是假设它在文档根目录中?
标签: php apache .htaccess mod-rewrite