【问题标题】:Mod_rewrite questionMod_rewrite 问题
【发布时间】:2011-02-24 04:22:26
【问题描述】:

可以在用户可以输入的地方使用 mod_rewrite 和 htaccess 重写我的 url:

http://www.mainsite.com/12345

服务器将翻译为:

http://www.mainsite.com/index.php?ID=12345

通过尝试从所有页面中删除文件扩展名,(删除 .php)它会发生冲突并导致永无止境的重定向:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.php$ $1 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z]+)$ index.html?ID=$1 [QSA,NC,L,R]
</IfModule>

【问题讨论】:

    标签: .htaccess


    【解决方案1】:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([0-9]+)$ index.php?ID=$1
    

    【讨论】:

    • @Zimbabao - 感谢您的帮助!如果我想包含任何字母数字,我是否只需更改 [0-9] 内的内容?还有——如果 12345 是目录还是文件会引起冲突吗?
    • 是的,您只需将 [0-9] 更改为 [0-9a-zA-Z] 即可。对于其他事情,我将在答案中进行编辑。
    • @Zimbabao - 所以我认为重写将是: RewriteRule ^(.+)$ index.php?ID=$1 感谢您的帮助 - 您能解决我上面评论中的问题吗?跨度>
    • 注意 - 您的建议也有效,实际上可能比点 (.) 更好,因为它限制了所有特殊字符
    • @blake : 我按照示例给出了正则表达式 :)
    猜你喜欢
    • 2010-09-16
    • 2014-09-20
    • 2011-02-28
    • 2012-06-07
    • 2018-12-21
    • 2013-04-05
    相关资源
    最近更新 更多