我有以下.htaccess:
RewriteEngine On
RewriteBase /shared/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /shared.php [L]
但我还想删除带有以下内容的.php扩展名:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
我已经根据其他地方的答案尝试了十几种组合,不仅仅是在StackOverflow上,但仍然无法正确使用,我要么在共享目录中渲染页面无法打开500/404错误,要么在转到/共享时出现500错误。
经过进一步的调查和试验,当我添加删除.php扩展名的规则时,它会混淆第一条规则,即在/ shared /路径下将任何东西路由到shared.php,路径/共享/用户名不是真正的位置但是该脚本确保提供正确的信息。如果URL在路径中具有/ shared /,那么忽略第二条规则会很方便吗?那可能吗?我没有将所有内容重写到/ shared /目录 - 只有当路径读取/ shared / username我希望该规则启动时,其他所有内容都应该重写到/ base目录。
答案 0 :(得分:2)
保持这样的规则:
RewriteEngine On
RewriteBase /shared/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /shared.php [L]