Php 如何重新写入链接,使用“重新写入”;。“htaccess”;,在子文件夹中?
我有一个网站,结构如下:Php 如何重新写入链接,使用“重新写入”;。“htaccess”;,在子文件夹中?,php,apache,.htaccess,Php,Apache,.htaccess,我有一个网站,结构如下:http://example.com/-/?id=1234。现在,我想编辑以下链接:http://example.com/-/1234 因此,我在http://example.com/-/;内容包括: RewriteEngine On RewriteRule ^/?-/([0-9]+)$ /index.php?id=$1 不幸的是,它总是显示:错误-500 我的.htaccess有什么问题 我的问题是而不是与任何现有问题重复 这是对子文件夹的访问权限 <If
http://example.com/-/?id=1234
。现在,我想编辑以下链接:http://example.com/-/1234
因此,我在
http://example.com/-/
;内容包括:
RewriteEngine On
RewriteRule ^/?-/([0-9]+)$ /index.php?id=$1
不幸的是,它总是显示:错误-500
我的
.htaccess
有什么问题
我的问题是而不是与任何现有问题重复
这是对子文件夹的访问权限
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /foldername
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>
选项+FollowSymLinks
重新启动发动机
重写基本/文件夹名称
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php?$1[L]
您可以在/-/.htaccess中使用以下规则
RewriteEngine on
RewriteRule ^/?([0-9]+)$ /-/?id=$1 [L]
这应该起作用:
RewriteEngine On
RewriteRule ^-/([0-9]+)$ /-/?id=$1
它在我的测试服务器(Apache/2.4.6)上正确重写,下面是重写跟踪日志(为了清晰起见,启用了重定向):
根据您所写的内容,您的目录结构如下:
"/" (root)
|
|___ "-" (directory)
|
|___ .htaccess
|___ index.php
RewriteRule ^/?-/([0-9]+)$ /index.php?id=$1
然而,规则是:
"/" (root)
|
|___ "-" (directory)
|
|___ .htaccess
|___ index.php
RewriteRule ^/?-/([0-9]+)$ /index.php?id=$1
对于您指定的目录结构,除非您请求类似url的url,否则该规则永远不会匹配http://www.example.com/-/-/123
(注意2级连字符)。这是因为.htaccess
使用的路径与文件所在的位置相关,并且您已经声明它位于名为“-”的目录中。前导斜杠将而不是跳转匹配到根目录的URL,因为您允许它0或1次(?)它将被忽略,因此实际上,它正在从名为“-”的目录中查找名为“-”的目录
然后,如果你看一下你的重写实际上要去哪里,它不是去/-/index.php
,而是去/index.php
(域的根);前导的/
将在重写时生效
如果索引和.htaccess文件位于docroot中,则该规则几乎是合理的
"/" (root)
|
|___ .htaccess
|___ index.php
。。。那个“-”目录实际上并不存在,但它只是被用作URL中的重写触发器
在这种情况下,您的重写规则应为:
RewriteRule ^-/([0-9]+)$ /index.php?id=$1
但是所有这些都不会导致HTTP 500错误-您还有一个问题没有告诉我们。根据您的请求,这是您的服务器结构: "/" (root)
|
|___ "-" (directory)
|
|___ .htaccess
|___ index.php
询问前搜索您是否仔细检查了配置?HTTP错误
500
或505
?-它们的意思完全不同,^/?-/
对我来说没有意义。为什么?
在那里?您是否遵循了此apache教程?但它在戈达迪对我有效。请再次正确检查。@YeuSeChia 404错误代码与服务器上由重写规则指定的新位置的文件不匹配时存在。所以,检查它,再次检查它所有是的,它尝试匹配路径,你的函数中没有参数,所以它给出错误404。试着先纠正你的路线?id=1234不是路由请求,但/1234对于此请求,您应该定义路由检查您的服务器错误日志以了解有关500错误的信息,这不是由于重写规则造成的。。。。这是我半小时前得出的结论;)我想只有gotcha可以是一个递归重写循环——尽管这应该是508
。