【问题标题】:Rewrite index.php to root with variable使用变量将 index.php 重写为 root
【发布时间】:2014-12-17 22:07:17
【问题描述】:

我正在设置我的 htaccess,一切都按我想要的方式工作:

Options +FollowSymLinks
RewriteEngine on

# redirect www to non-www
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?mydomain\.com)$ [NC]
RewriteRule .? http://%1%{REQUEST_URI}/ [R=301,L]

#rewrite pages
RewriteRule ^photo/([^/]*)/([^/]*)$ /photo.php?slug=$1 [L]
RewriteRule ^video/([^/]*)/([^/]*)$ /video.php?slug=$1 [L]
RewriteRule ^quote/([^/]*)/([^/]*)$ /quote.php?slug=$1 [L]
RewriteRule ^post/([^/]*)/([^/]*)$ /post.php?slug=$1 [L]
RewriteRule ^author/([^/]*)/([^/]*)$ /author.php?display_name=$1 [L]
RewriteRule ^tag/([^/]*)/([^/]*)$ /tag.php?tag_name=$1 [L]
RewriteRule ^category/([^/]*)/([^/]*)$ /category.php?slug=$1 [L]
RewriteRule ^blog/$ /blog.php [L]
RewriteRule ^videos/$ /videos.php [L]
RewriteRule ^photos/$ /photos.php [L]
RewriteRule ^coming-soon/$ /coming-soon.php [L]
RewriteRule ^404/$ /404.php [L]

#add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]

#error redirect
ErrorDocument 404 /404

我将如何设置它以便 index.php?page=2 重定向到 mydomain.com/2/

【问题讨论】:

    标签: php .htaccess variables get


    【解决方案1】:

    你可以使用:

    #error redirect
    ErrorDocument 404 /404
    
    Options +FollowSymLinks
    RewriteEngine on
    
    # redirect www to non-www
    RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?mydomain\.com)$ [NC]
    RewriteRule .? http://%1%{REQUEST_URI}/ [R=301,L]
    
    #add trailing slash
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^.*[^/]$ /$0/ [L,R=301]
    
    #rewrite pages
    RewriteRule ^photo/([^/]*)/([^/]*)$ /photo.php?slug=$1 [L]
    RewriteRule ^video/([^/]*)/([^/]*)$ /video.php?slug=$1 [L]
    RewriteRule ^quote/([^/]*)/([^/]*)$ /quote.php?slug=$1 [L]
    RewriteRule ^post/([^/]*)/([^/]*)$ /post.php?slug=$1 [L]
    RewriteRule ^author/([^/]*)/([^/]*)$ /author.php?display_name=$1 [L]
    RewriteRule ^tag/([^/]*)/([^/]*)$ /tag.php?tag_name=$1 [L]
    RewriteRule ^category/([^/]*)/([^/]*)$ /category.php?slug=$1 [L]
    RewriteRule ^blog/$ /blog.php [L]
    RewriteRule ^videos/$ /videos.php [L]
    RewriteRule ^photos/$ /photos.php [L]
    RewriteRule ^coming-soon/$ /coming-soon.php [L]
    RewriteRule ^404/$ /404.php [L]
    
    RewriteRule ^(\d+)/?$ /index.php?page=$1 [L,QSA]
    

    始终将重定向规则放在内部规则之前,并将包罗万象的类型规则放在底部。

    【讨论】:

    • 效果很好!谢谢你的指导。我刚开始学习 htaccess,这对我很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2011-06-10
    • 1970-01-01
    • 2021-06-29
    相关资源
    最近更新 更多