SIS*_*SYN 2 php c .htaccess mod-rewrite
我正在尝试.htaccess使用url参数将所有URL转发到单个页面,以便我可以通过这种方式处理页面检索.我想要发生的是:说它中的用户类型http://mysite.com/users/dan应该转发到页面http://mysite.com/index.php?url=/users/dan.
同样,如果用户访问了http://mysite.com/random-link它应转发的URLhttp://mysite.com/index.php?url=random-link
这是我在我的.htaccess文件中尝试的代码,但它只是向我抛出500错误:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond % (REQUEST_FILENAME) !-f
RewriteRule (.*)$ index.php?url=$1 <QSA,L>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我更新了我的代码并且它仍然是500错误 我将<和>更改为[和]并且我在RewriteCond中删除了%之后的空格,但它仍然抛出错误.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我是一个新手.htaccess,所以任何帮助将不胜感激,因为我不知道是什么导致服务器超时.
几个问题
重写标志放在方括号中,例如
[QSA,L]
Run Code Online (Sandbox Code Playgroud)您的RewriteCondition语法看起来不正确 尝试
RewriteCond %{REQUEST_FILENAME} !-f
Run Code Online (Sandbox Code Playgroud)为了安全起见,将表达式锚定到字符串的开头
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)最后,RewriteEngine后续修饰符需要FileInfo 覆盖.确保<Directory>文档根目录的服务器配置或虚拟主机部分具有
AllowOverride FileInfo
Run Code Online (Sandbox Code Playgroud)
这是MVC项目的典型重写方案.这将忽略真实文件,目录和符号链接
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)