Php Mod rewrite-如何使此规则起作用?
我的网站只有一个文件可以调用(index.php),使用控制器我可以显示不同的页面。此页面位于office/web中 我以以下方式修改了.htaccess:Php Mod rewrite-如何使此规则起作用?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我的网站只有一个文件可以调用(index.php),使用控制器我可以显示不同的页面。此页面位于office/web中 我以以下方式修改了.htaccess: Options +FollowSymlinks RewriteEngine On # Turn on the rewriting engine #skip existing files or directories RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_F
Options +FollowSymlinks
RewriteEngine On # Turn on the rewriting engine
#skip existing files or directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#everything else goes to index.php
RewriteRule ^sale/chicago/?$ /office/web/index.php?action=w_filter&type=1&zone=3 [NC,L]
RewriteRule ^sale/?$ /office/web/index.php?action=w_filter&type=1 [NC,L]
RewriteRule ^rent/?$ /office/web/index.php?action=w_filter&type=2 [NC,L]
访问http://localhost/office/web/sale/chicago/
,页面将加载,因此主规则正在运行
但是,所需的所有其他文件(css、js…)都给出了404未找到错误
在html文件中使用
,它期望
http://localhost/office/web/sale/chicago/assets/js/bootstrap.min.js
正确的URL是:
http://localhost/office/web/assets/js/bootstrap.min.js
依此类推,适用于所有其他媒体文件
要解决这个问题,我需要在.htaccess中添加/更改什么?您应该使用绝对URL链接js和css 而不是
<script type='text/javascript' src='assets/js/bootstrap.min.js'></script>
试试这个
<script type='text/javascript' src='/office/web/assets/js/bootstrap.min.js'></script>
让我知道它是否有用。您应该使用绝对URL链接js和css 而不是
<script type='text/javascript' src='assets/js/bootstrap.min.js'></script>
试试这个
<script type='text/javascript' src='/office/web/assets/js/bootstrap.min.js'></script>
让我知道它是否有用。您应该使用绝对URL链接js和css 而不是
<script type='text/javascript' src='assets/js/bootstrap.min.js'></script>
试试这个
<script type='text/javascript' src='/office/web/assets/js/bootstrap.min.js'></script>
让我知道它是否有用。您应该使用绝对URL链接js和css 而不是
<script type='text/javascript' src='assets/js/bootstrap.min.js'></script>
试试这个
<script type='text/javascript' src='/office/web/assets/js/bootstrap.min.js'></script>
让我知道它是否有用。这是基于纯
mod_rewrite
的解决方案,您可以避免在资源(js、图像、图像等)中写入完整路径:
将此规则添加到其他规则之上:
RewriteRule ^(assets/.+?)$ /office/web/$1 [L,NC,R]
另外,请理解,RewriteCond
仅适用于下一个RewriteRule
。在您的问题中,只有2个RewriteCond
用于第一条规则,但接下来的2条规则没有
作为为每个规则添加RewriteCond
的替代方法,您可以将此规则置于顶部以跳过所有文件/目录的重写规则:
## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## don't do anything
RewriteRule ^ - [L]
这是一个基于纯
mod_rewrite
的解决方案,您可以避免在资源(js、图像、图像等)中写入完整路径:
将此规则添加到其他规则之上:
RewriteRule ^(assets/.+?)$ /office/web/$1 [L,NC,R]
另外,请理解,RewriteCond
仅适用于下一个RewriteRule
。在您的问题中,只有2个RewriteCond
用于第一条规则,但接下来的2条规则没有
作为为每个规则添加RewriteCond
的替代方法,您可以将此规则置于顶部以跳过所有文件/目录的重写规则:
## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## don't do anything
RewriteRule ^ - [L]
这是一个基于纯
mod_rewrite
的解决方案,您可以避免在资源(js、图像、图像等)中写入完整路径:
将此规则添加到其他规则之上:
RewriteRule ^(assets/.+?)$ /office/web/$1 [L,NC,R]
另外,请理解,RewriteCond
仅适用于下一个RewriteRule
。在您的问题中,只有2个RewriteCond
用于第一条规则,但接下来的2条规则没有
作为为每个规则添加RewriteCond
的替代方法,您可以将此规则置于顶部以跳过所有文件/目录的重写规则:
## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## don't do anything
RewriteRule ^ - [L]
这是一个基于纯
mod_rewrite
的解决方案,您可以避免在资源(js、图像、图像等)中写入完整路径:
将此规则添加到其他规则之上:
RewriteRule ^(assets/.+?)$ /office/web/$1 [L,NC,R]
另外,请理解,RewriteCond
仅适用于下一个RewriteRule
。在您的问题中,只有2个RewriteCond
用于第一条规则,但接下来的2条规则没有
作为为每个规则添加RewriteCond
的替代方法,您可以将此规则置于顶部以跳过所有文件/目录的重写规则:
## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## don't do anything
RewriteRule ^ - [L]
是的,这项工作。我已经在想了。但是通过这种方式,每次我将文件上传到服务器上时,我都需要更改绝对路径。这是因为这些文件实际上是html模板。。。我在考虑更多关于.htaccess的解决方案。最终,我将不得不使用它。@Parkyprg为什么要更改绝对路径?因为在本地主机上我有/office/web/,但在服务器上我有不同的文件路径(例如/web/only)@Parkyprg我曾经遇到过这个问题。然后我学会了在localhost中创建一个子域,例如myweb.localhost.com,它指向/office,所以它与服务器中的子域是一样的。是的,这项工作。我已经在想了。但是通过这种方式,每次我将文件上传到服务器上时,我都需要更改绝对路径。这是因为这些文件实际上是html模板。。。我在考虑更多关于.htaccess的解决方案。最终,我将不得不使用它。@Parkyprg为什么要更改绝对路径?因为在本地主机上我有/office/web/,但在服务器上我有不同的文件路径(例如/web/only)@Parkyprg我曾经遇到过这个问题。然后我学会了在localhost中创建一个子域,例如myweb.localhost.com,它指向/office,所以它与服务器中的子域是一样的。是的,这项工作。我已经在想了。但是通过这种方式,每次我将文件上传到服务器上时,我都需要更改绝对路径。这是因为这些文件实际上是html模板。。。我在考虑更多关于.htaccess的解决方案。最终,我将不得不使用它。@Parkyprg为什么要更改绝对路径?因为在本地主机上我有/office/web/,但在服务器上我有不同的文件路径(例如/web/only)@Parkyprg我曾经遇到过这个问题。然后我学会了在localhost中创建一个子域,例如myweb.localhost.com,它指向/office,所以它与服务器中的子域是一样的。是的,这项工作。我已经在想了。但是通过这种方式,每次我将文件上传到服务器上时,我都需要更改绝对路径。这是因为这些文件实际上是html模板。。。我在考虑更多关于.htaccess的解决方案。最终,我将不得不使用它。@Parkyprg为什么要更改绝对路径?因为在本地主机上我有/office/web/,但在服务器上我有不同的文件路径(例如/web/only)@Parkyprg我曾经遇到过这个问题。然后我学会了在localhost中创建一个子域,例如myweb.localhost.com,它指向/office,所以它是