Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 重写mod_时遇到很多麻烦_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess 重写mod_时遇到很多麻烦

.htaccess 重写mod_时遇到很多麻烦,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我的.htaccess文件中有一些问题 我想显示此URL的内容: http://mywebsite.com/admin/payments/invoices/view/index.php?id=123456 当我访问此文件时: http://mywebsite.com/admin/payments/invoices/view/123456/ 这是我的实际访问权限 Options +FollowSymlinks RewriteEngine On RewriteBase /admin/paymen

我的
.htaccess
文件中有一些问题

我想显示此URL的内容:

http://mywebsite.com/admin/payments/invoices/view/index.php?id=123456
当我访问此文件时:

http://mywebsite.com/admin/payments/invoices/view/123456/
这是我的实际访问权限

Options +FollowSymlinks
RewriteEngine On
RewriteBase /admin/payments/invoices/
RewriteRule ^/view/([0-9]+)/(index.php)?$ /view/index.php?id=$1 [L,QSA]
你知道吗

谢谢

试试这个:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^.*admin/payments/invoices/view/index\.php\?id=([0-9]+) admin/payments/invoices/view/$1/index.php [L]

</IfModule>

重新启动发动机
重写规则^.*admin/payments/invoices/view/index\.php\?id=([0-9]+)admin/payments/invoices/view/$1/index.php[L]

尝试将其放入文档根目录的htaccess文件中:

RewriteEngine On
RewriteCond %{QUERY_STRING} (^|&)id=([0-9]+)
RewriteRule ^admin/payments/invoices/view/index\.php$ /admin/payments/invoices/view/%1/index.php [L]
因此,当您输入
http://mywebsite.com/admin/payments/invoices/view/index.php?id=123456
在浏览器的URL地址栏中,您将获得
/admin/payments/invoices/view/123456/index.php
上的内容,如果你想换个方式:

RewriteEngine On
RewriteRule ^admin/payments/invoices/view/([0-9]+)/(index.php)?$ /admin/payments/invoices/view/index.php?id=$1 [L,QSA]

如果您确实有
视图
目录,那么最简单的方法是将此
.htaccess
放入该目录(即
{DOCUMENT\u ROOT}/admin/payments/invoices/view/.htaccess
):

RewriteRule
左侧的index.php不是必需的(实际上,我希望它不会起作用:在这个阶段,
DirectoryIndex
还不应该被注入URI中-除非其他
RewriteRule
生效?),在
RewriteBase
末尾的/


我在Apache/2.2.21上测试了上述内容,但模块规则在更高版本中是相同的。

您无法与
重写规则中的查询字符串匹配,我知道了,我不知道。我将尝试更新答案,但我不确定如何使用htaccess提取该值。可能最好创建一个虚拟的
index.php
文件,并使用
header
在php中重定向客户端。“你觉得怎么样?”马修,那么你想要第二个one@JonLin看来我之前的评论没有正确发送。我几乎找到了制作它的方法,但它确实需要改进:
RewriteCond%{QUERY_STRING}^id=([0-9]+)$RewriteRule^index.php$%1/?[R=301,L]
但当我进入时,我得到了:几乎是这样,但我仍然没有达到我想要的xD
Options +FollowSymlinks
RewriteEngine On

RewriteBase /admin/payments/invoices/view
RewriteRule ^(\d+)$  index.php?id=$1 [L,QSA]