大家好,我想知道我是否可以挑选你的大脑,并且尽可能具有描述性。
所以我试图创建一个页面,根据用户选择的选项加载标题和类别(动态来自数据库)
网站名称用作我的域名
所以为了更清楚一点,我有一个名为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 /它显示变量havent设置为因为它们不再出现在浏览器的标题选项卡中,并且该页面也不使用我的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]
这里只是加入我在php.php中使用的PHP代码我连接到我的数据库没有问题,在下面的代码后运行一个while循环来获取用户点击的行的数据
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]
答案 0 :(得分:0)
如果您的网址以2017
开头,则必须将其包含在您的RewriteRule中。
RewriteRule ^2017/slot/([a-z-]+)/([a-z-]+)/ slot.php?gp=$1&sn=$2 [NC,L]
答案 1 :(得分:0)
您误导了^
,它与路径的最开头(sitename/
之后的部分相匹配。)也就是说,以^slot/
开头的规则仅匹配{ {1}},而非sitename/slot/
。您的规则应如下所示:
sitename/2017/slot/
答案 2 :(得分:0)
我可以参加聚会吗?
RewriteRule ^sitename/2017/slot/([a-z-]+)/([a-z-]+)/ /slot.php?gp=$1&sn=$2 [NC,L]
如果sitename
域名,我会将答案更改为:
RewriteRule ^2017/slot/([a-z-]+)/([a-z-]+)/ /slot.php?gp=$1&sn=$2 [NC,L]
这与Dekel's几乎相同,但并不完全相同:)。
答案 3 :(得分:0)
#example.com/2017/slot.php?gp=category&sn=title #example.com/2017/slot/category/title/
您需要禁用MutliViews。靠近.htaccess
文件的顶部:
Options -MultiViews
启用MultiViews(mod_negotiation的一部分)/2017/slot
被隐式重写为/2017/slot.php
(没有任何查询字符串参数)之前正在处理你的mod_rewrite指令。
虽然目前还不清楚.htaccess
文件的位置。因此,可能还有一些工作要做......如果您的.htaccess
文件位于example.com/2017/.htaccess
,那么您现有的mod_rewrite指令就足够了。
但是,如果您的.htaccess
文件位于文档根目录中(即example.com/.htaccess
),那么您需要修改RewriteRule
:
RewriteRule ^2017/slot/([a-z-]+)/([a-z-]+)/ 2017/slot.php?gp=$1&sn=$2 [NC,L]