Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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

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
Php 使用.htaccess重新写入动态URL_Php_.htaccess_Url_Mod Rewrite_Dynamic - Fatal编程技术网

Php 使用.htaccess重新写入动态URL

Php 使用.htaccess重新写入动态URL,php,.htaccess,url,mod-rewrite,dynamic,Php,.htaccess,Url,Mod Rewrite,Dynamic,我想删除所有网页末尾的“.php” 及 重写“example.com/archive?url=…”部分的动态url 到目前为止我得到了什么: Options -MultiViews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php 这一部分很好,但现在我还想为网站的以下部分重写我的动态URL 旧url:ex

我想删除所有网页末尾的“.php” 及 重写“example.com/archive?url=…”部分的动态url

到目前为止我得到了什么:

Options -MultiViews

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
这一部分很好,但现在我还想为网站的以下部分重写我的动态URL

旧url:example.com/archive?url=测试文章

RewriteRule ^archive/([^/]+)$ archive?url=$1
新url:example.com/archive/test-article

RewriteRule ^archive/([^/]+)$ archive?url=$1
这部分不行。我错过了什么

它用于一个附加域,所以这可能与问题有关

编辑1:

Options -MultiViews

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
我在.htaccess文件中放入了一些垃圾,它生成了一个错误,因此我确定它正在读取该文件

编辑2:

Options -MultiViews

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
我禁用了下面建议的多视图,但现在出现了一个内部服务器错误。 这是错误日志:

[星期二2014年5月20日13:12:12][error][client(ip)]由于可能的配置错误,请求超出了10个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“日志级别调试”获取回溯跟踪

编辑3:我找到了解决方案

我将最后一条规则改为:

RewriteRule ^news/([^/]+)$ archive?url=$1

您很可能启用了选项
MultiViews

您可以使用以下方法禁用该功能:

Options -MultiViews
禁用
多视图
后,当您请求
/file
时,它将不会提供
/file.php

编辑:根据修改后的问题,您可以执行以下操作:

RewriteRule ^news/([^/]+)$ archive?url=$1

请尝试删除
^archive/
中的插入符号,如果这样做有效,请尝试使用
^/archive/
而不是
重写规则^(.*)$1.html
如果您尝试从所有网页的结尾删除“php”,那么该如何工作呢?@Joh Lin:我不知道,但它可以工作。当实际文件为example.com/archive/2014.php时,当我链接到example/archive/2014I编辑代码时,它将加载正确的页面。我现在禁用了多视图,但收到以下错误日志:[Tue May 20 13:12:12 2014][error][client(ip)]由于可能的配置错误,请求超出了10个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯启用多视图时收到的消息:“在此服务器上找不到请求的URL/archief/测试项目。然后,我按照您的建议禁用了多视图,但现在收到以下消息:”内部服务器错误:服务器遇到内部错误或配置错误,无法完成您的请求。“您可以检查Apache错误日志以查看导致500的原因吗?这是错误日志:[Tue May 20 13:12:12 2014][Error][client(ip)]由于可能的配置错误,请求超出了10个内部重定向的限制。如果需要,请使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。这意味着您有一些循环规则。您是否可以发布有问题的complete.htaccess。我在上面添加了complete.htaccess文件。