Apache htaccess将第一个目录重写为文件名

Apache htaccess将第一个目录重写为文件名,apache,.htaccess,Apache,.htaccess,我想知道如何执行htaccess重写,如下所述 domain.com/filename/testing123-->domain.com/filename.php?/testing123 其中“filename”是php文件的名称。此“文件名”可以更改,“文件名”之后的任何内容都可以添加到“?”之后 另一个例子是: domain.com/abc/other/information/etc-->domain.com/abc.php?/other/information/etc 谢谢 Connor使用

我想知道如何执行htaccess重写,如下所述

domain.com/filename/testing123-->domain.com/filename.php?/testing123

其中“filename”是php文件的名称。此“文件名”可以更改,“文件名”之后的任何内容都可以添加到“?”之后

另一个例子是:

domain.com/abc/other/information/etc-->domain.com/abc.php?/other/information/etc

谢谢

Connor

使用
^([^/]+)
将所有内容匹配到第一个
/
,第一个
.php
将被附加到第一个
.php
上,使用
(.*)
通过
$2
匹配在
之后附加的所有其他内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(.*)$ $1.php?$2 [L]
使用
^([^/]+)
匹配第一个
/
之前的所有内容,将
.php
附加到第一个
.php,使用
(.*)
通过
$2
匹配在
之后附加的所有其他内容

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !\.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(.*)$ $1.php?$2 [L]

很好,谢谢。唯一的问题是,如果文件不存在,它会返回一个“500内部服务器错误”,您知道如何修复吗?在更改调试日志级别并增加LimitInternalRecursion后,当导航到一个不存在的文件时,而不是接收到“500内部服务器错误”,发生以下情况:@xConMz请参阅上面的添加,以防止在请求中包含
\.php
时重写,从而防止重写循环。工作正常。非常感谢您的帮助:-)效果很好,谢谢。唯一的问题是,如果文件不存在,它会返回一个“500内部服务器错误”,您知道如何修复吗?在更改调试日志级别并增加LimitInternalRecursion后,当导航到一个不存在的文件时,而不是接收到“500内部服务器错误”,发生以下情况:@xConMz请参阅上面的添加,以防止在请求中包含
\.php
时重写,从而防止重写循环。工作正常。非常感谢您的帮助:-)