我创建了2个动态页面,第一个是个人资料页面,第二个是城市页面。这两个页面基本上都是由来自URL的数据的查询提供的。root/profile.php?userid=user和root/finder.php?state=state&city=city
。
我的计划是将root/profile/user
和root/state/city
这两个页面的URL重写为root/profile.php?userid=user
和root/finder.php?state=state&city=city
,这样查询就会得到解析,然后显示在一个好看的URL上。
root/profile/user
(不存在的页面)根/配置文件?userid=user
root/profile/user
文件结构:
根
- index
- header
- footer
- .htaccess
- login page
- sign up page
- sql connection
- script
- image upload
根/CSS
- CSS file
根/包括
- login function
- logout function
- sign up function
- all other functions
奇怪的是,我一打开rewriteengine
上的rewriteengine,一切就马上乱套了。甚至不用键入
root/profile/user
或root/state/city
(我假设只有当服务器处理重写时才这样做,从而把事情搞乱了)。反过来也是如此。在我注释掉RewriteEngine和save.htAccess之后,它立即从索引页重新开始工作。
你们能帮我弄明白我错在哪里吗?或者,至少,我遗漏了哪一个概念?下面是我使用的重写规则:
RewriteEngine on
RewriteRule ^profile/([0-9a-zA-Z]+) profile.php?userid=$1
RewriteRule ^([0-9a-zA-Z]+)/([0-9a-zA-Z]+) city_page.php?state=$1&city=$2
我对PHP和服务器是完全陌生的,对正则表达式更是如此,所以请原谅我完全缺乏知识。如果有更好的方法来创建一个动态生成的URL,您只需给我指出正确的方向,我将研究它。
感谢大家的帮助!
在您的站点root.htaccess:
Options -MultiViews
RewriteEngine on
# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
# profile user rewrite rule
RewriteRule ^profile/([\w-]+)/?$ profile.php?userid=$1 [L,QSA,NC]
# state city rewrite rule
RewriteRule ^([\w+)/([\w-]+)/?$ city_page.php?state=$1&city=$2 [L,QSA]
请记住,使用这些重写规则,您的css/js/images的相对链接可能无法正常工作。要使其工作,您可以在页面HTML的标记下面添加以下指令:
<base href="/" />
问题内容: 几天前使用时,它已经正常工作了。 但是现在不起作用了。而且我不知道问题出在哪里。 它显示“邮件已发送”。 我没有碰过Apache或这段代码中的任何内容。我已经在空PHP文件中测试了代码,结果相同。如何调试此问题? 问题答案: 可能是电子邮件发送正常,但被垃圾邮件过滤器捕获了吗?如果可以的话,请允许我交叉发表自己的看法: 一些要点(假设mail()返回true,并且错误日志中没有错误):
问题内容: 我遇到了一个问题,JPA试图在我不想要的时候延迟加载我的数据。从本质上讲,正在发生的事情是我正在使用Service检索一些数据,并且当我将这些数据解析为JSON时,JSON库正在触发hibernate模式以尝试懒惰地加载数据。有什么办法可以阻止这种情况?我在下面给出一个例子。 是否可以将JPA /hibernate设置为不尝试并延迟加载数据? 更新: 我意识到您可以使用FetchTyp
null GrantPermissionRule是否停止了为其他人所宣传的工作?
当我运行得到的命令时,我面临新安装的Angular错误 我使用节点12.6.1与源代码树,并验证bow已安装
问题内容: 我的Selenium Webdriver转到页面并等待该页面完成加载。如果30秒过去,它将超时并且脚本失败。 无论如何,是否要让网络驱动程序在30秒后停止页面加载(例如按浏览器中的“ x”)?这样可以防止驱动程序超时。 我正在使用Chromedriver。 问题答案: 这就是我遇到此问题的方式。在chrome支持之前,我将使用这种方式。 我在Chrome中安装了一个名为“停止加载”的扩
我的selenium webdriver转到一个页面,等待该页面完成加载。如果超过30秒,则超时,脚本失败。 是否需要webdriver在30秒后停止页面加载(如按浏览器上的“x”)?这将防止我的司机超时。 我正在使用ChromeDrive。