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使用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使用
^([^/]+)
将所有内容匹配到第一个/
,第一个.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
时重写,从而防止重写循环。工作正常。非常感谢您的帮助:-)