我的网络应用程序的网址采用以下形式:
/cms/welcome
/cms/system-admin/groups
/cms/system-admin/standard-lists/accounting/COA
....
....
我正在尝试找到一个正则表达式,将其转换为:
/cms/index.php?content=welcome
/cms/index.php?content=system-admin/groups
/cms/index.php?content=system-admin/standard-lists/accounting/COA
....
....
我在下面尝试了这个但是没有给出'在此服务器上找不到请求的网址 / cms / welcome / ','请求的网址 / cms / system-admin /在此服务器等上找不到组等
RewriteEngine On
RewriteBase /cms
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^([^/]+)/?$ index.php?content=$1 [L]
我的假设是: ^([^ /] +)/?$ 应匹配 / cms / 之后的任何内容并将其存储在 $ 1 。 任何帮助将不胜感激。 以下重写也失败了: RewriteRule ^(。*)$ index.php?page = $ 1
RewriteRule ^ /?([A-Za-z0-9 - /] +)/?$ index.php?page = $ 1 [QSA,L]
答案 0 :(得分:0)
这是正则表达式:
(/cms/)(.*)
并将其替换为:
$1index.php?content=$2
我对PHP或htaccess一无所知,但我认为这应该有效:
RewriteEngine On
RewriteBase /cms
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (/cms/)(.*) $1index.php?content=$2 [L]
答案 1 :(得分:0)
# Turn on rewriting
RewriteEngine On
# Starting with /cms
RewriteBase /cms
# If there's no file that matches the request
RewriteCond %{REQUEST_FILENAME} !-f
# *nor* a directory
RewriteCond %{REQUEST_FILENAME} !-d
# Then rewrite retaining any parameters [QSA] and stop [L]
RewriteRule ^(.*)$ index.php?content=$1 [L,QSA]
你能发现你做错了吗?
检查RewriteCond指令
需要另一个提示吗?
你的第二个RewriteCond说:只有在请求存在文件系统目录 时才重写;有个 '!'丢失。