Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 重写规则以删除文件扩展名和操作_Php_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Php 重写规则以删除文件扩展名和操作

Php 重写规则以删除文件扩展名和操作,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我正在尝试创建一个重写规则,以从中删除文件扩展名和操作 例如,此url: password.php?action=new 应改写为: password/new 我正在尝试以下内容: RewriteRule ^password/([a-zA-Z]+)/?$ /password.php?action=$1 [L,QSA] 它似乎不起作用 另外,如何对每个文件进行泛化,而不是指定password.php文件?比如说 file1.php?action=edit file1/edit file2

我正在尝试创建一个重写规则,以从中删除文件扩展名和操作

例如,此url:

password.php?action=new
应改写为:

password/new 
我正在尝试以下内容:

RewriteRule ^password/([a-zA-Z]+)/?$ /password.php?action=$1 [L,QSA]
它似乎不起作用

另外,如何对每个文件进行泛化,而不是指定password.php文件?比如说

file1.php?action=edit
file1/edit

file2.php?action=something
file2/something

您可以使用以下通用规则:

Options -MultiViews
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([\w-]+)/([\w-]+)/?$ $1.php?action=$2 [L,QSA]
  • RewriteCond%{DOCUMENT\u ROOT}/$1.php-f
    检查站点根目录中是否存在相应的
    .php
    文件,然后在其前面添加
    .php
  • 选项-多视图
    禁用功能

没问题,您是否可以编辑并包含整个
.htaccess
文件,或任何情况下的相关部分?我得到了500个内部服务器错误。此规则在我的Apache上运行良好。对于500,您需要检查Apache error.log并将相关日志消息粘贴到此处。还要确保它位于站点root.htaccess中,而不是子目录中。