我对正则表达式真的很陌生,而且我很难修复我的重写规则。
目前的结构如下:
RewriteEngine on
RewriteRule ^data.js$ /data.php [NC,L]
RewriteRule ^api/(.*)$ /api.php [NC,L]
RewriteRule ^(profile|photo)/?(.*)$ /index.php [NC]
如果我只查找/profile
或/photo
次观看,那么一切正常。但我想自动允许/messages
或/settings
,因为每次添加新的view
时,htaccess也需要对alternative literals
进行修改。现在,我的问题是如何替换matching group
以允许任何类似的链接:
/
/segment
/segment/?(.*)
我尝试了允许所有内容但最终出现“内部服务器错误”:
RewriteRule .* /index.php
还尝试了^(.*)$
和其他选项..也尝试了这个:
RewriteRule ^([A-Za-z0-9\.])/?(.*)$ /index.php
为了允许任何字母数字,但我仍然以“内部服务器错误”结束,我知道我正在用match any of content
弄乱方括号..有人可以启发我吗?
答案 0 :(得分:1)
您可以使用:
RewriteEngine on
RewriteBase /
RewriteRule ^data\.js$ data.php [NC,L]
RewriteRule ^api/(.*)$ api.php [NC,L]
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]