当前位置: 首页 > 知识库问答 >
问题:

htaccess中的Rewriterule停止PHP脚本的工作、停止加载图像和停止加载css

祁和通
2023-03-14

我创建了2个动态页面,第一个是个人资料页面,第二个是城市页面。这两个页面基本上都是由来自URL的数据的查询提供的。root/profile.php?userid=user和root/finder.php?state=state&city=city

我的计划是将root/profile/userroot/state/city这两个页面的URL重写为root/profile.php?userid=userroot/finder.php?state=state&city=city,这样查询就会得到解析,然后显示在一个好看的URL上。

  1. 访问者单击链接root/profile/user(不存在的页面)
  2. .htaccess重写服务器中的URL并将请求的页转换为根/配置文件?userid=user
  3. 查询返回并显示在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/userroot/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,您只需给我指出正确的方向,我将研究它。

感谢大家的帮助!


共有1个答案

窦成荫
2023-03-14

在您的站点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。