【问题标题】:How to change url without redirection?如何在不重定向的情况下更改 url?
【发布时间】:2016-01-24 16:14:46
【问题描述】:

我正面临重写网址问题。

当前网站网址:

testwebsite.com/dev/films.php?id=test

我想要:

testwebsite.com/dev/test

我尝试了太多的 htaccess 更改,但都不起作用。

我认为它必须在下面工作

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^dev/([0-9]+)-([a-z]+)/ http://testwebsite.com/dev/films.php?id=$1 [NC]

很遗憾,我找不到 404 页面。

当我删除 htaccess 并尝试时

testwebsite.com/dev/films/test

它正在工作。我没有 c 面板访问权限。是否有服务器端重定向?

不知道是什么问题?怎么解决的

【问题讨论】:

    标签: regex apache .htaccess url url-rewriting


    【解决方案1】:

    我们开始吧,在你的 /dev/ 目录中将它设置为 .htaccess 文件

    <IfModule mod_rewrite.c>
      RewriteEngine on
      #RewriteBase /dev/
    
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_URI} !=/favicon.ico
      RewriteCond %{REQUEST_FILENAME} !\.(css|js|jpeg|jpg|gif|png|bmp)$
      RewriteRule ^(.*)$ index.php?id=$1 [L,B,QSA]
    </IfModule>
    

    可能需要根据您的服务器设置取消注释 RewriteBase

    【讨论】:

    • 你明白我的问题了吗?
    • 当我输入任何内容而不是索引时,您的代码正在运行。它重定向到 index.php。但我不想要那个。当用户输入 testwebsite.com/dev/test 时,该 url 重写为 testwebsite.com/dev/films.php?id=test that
    • RewriteRule ^([a-z]+)$ films.php?id=$1 [L,B,QSA] 这对我有用
    • @DevelopmentTeamSUDO 抱歉回复太长了,所以只有当它包含 test 或以 test/films 之类的测试开头时才需要重定向,我是对吗?
    【解决方案2】:

    您必须确保 mod_rewrite 在您的 Apache 服务器上运行。 您还可以通过在发送任何 HTML 之前向浏览器发送标头信息来使用服务器端代码进行重定向 例如,您可以在 PHP 中这样做。

    PHP redirect

    【讨论】:

    • 你明白我的问题吗?重定向不是我的问题。 htaccess 规则是我的问题
    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 2012-05-22
    • 2013-08-11
    • 2020-11-04
    • 1970-01-01
    • 2013-10-12
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多