当前位置: 首页 > 知识库问答 >
问题:

HTAccess URL重写page.php?page

刘承悦
2023-03-14

我需要一个解决方案。需要重写两个URL:

/page.php?page=onama
/page.php?page=pravila

/onama    
/pravila

我尝试了许多不同的解决方案,但没有一个奏效。然而,我确实重写了这些网址,就像我说的,但是我的页面没有打开,所以我想它都在细节中。

对于提示:

>

onama.php和pravila.php文件位于/pages/目录中

编辑:

我想我很幸运:)用这个再试了一次,它成功了,我不擅长.htaccess规则,但这是我问题的解决方案:


    RewriteCond %{QUERY_STRING} ^page=([^&\s]+)$
    RewriteRule ^(?:page\.php|)$ /%1? [R=301,L]

    RewriteCond %{QUERY_STRING} ^page=([^&\s]+)&page=([^&\s]+)$
    RewriteRule ^(?:page\.php|)$ /%1/%2? [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^\s\/]+)/?$ page.php?page=$1&r [L,QSA]

编辑(新问题)

我试图制定两个重写规则,但无法让它们一起工作。所以,问题在于规则1和规则2。

当规则1第一次出现在.htaccess文件中时,它就像一个符咒一样工作,但是规则2有一个问题-给了我一个空白页。

当RULE 2第一次出现在. htaccess文件中时,RULE 1不起作用-给我404页。

在这两种情况下,URL都是SEF,并且正常工作,但内容不显示。

我的htaccess文件:

# RULE 1 - rewriting "/index.php?view=X" to "/X" 
RewriteEngine On
RewriteCond %{QUERY_STRING} ^view=([^&\s]+)$
RewriteRule ^(?:index\.php|)$ /%1? [R=301,L]

RewriteCond %{QUERY_STRING} ^view=([^&\s]+)$
RewriteRule ^(?:index\.php|)$ /%1/%2? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\s\/]+)/?$ index.php?view=$1&r [L,QSA]

# END OF RULE 1

# RULE 2 - rewriting "page.php?page=X" to "/X"

RewriteEngine On
RewriteCond %{QUERY_STRING} ^page=([^&\s]+)$
RewriteRule ^(?:page\.php|)$ /%1? [R=301,L]

RewriteCond %{QUERY_STRING} ^page=([^&\s]+)&page=([^&\s]+)$
RewriteRule ^(?:page\.php|)$ /%1/%2? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\s\/]+)/?$ page.php?page=$1&r [L,QSA]

# END OF RULE 2

#RULE 3 - rewriting "index.php" to "/"

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{REQUEST_URI} !/system/.* [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

#END OF RULE 3

共有1个答案

秋光熙
2023-03-14
RewriteEngine On
RewriteRule ^pravila$  "/page.php?page=pravila"
RewriteRule ^onama$    "/page.php?page=onama"

您的Apache需要配置为允许在此目录中覆盖.htaccess才能工作。

 类似资料:
  • 问题内容: 在AppConfig类的代码中,我们可以看到: 好吧,这是我的例子: my_app / apps.py 我只想使现成的方法起作用。也就是说,当Django找到my_app时,让它运行ready方法。 该应用已在INSTALLED_APPS中注册。 我执行’python manage.py runserver’。并没有打印任何内容。 如果我在ready方法中放置一个断点,则调试器不会在那

  • "The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Send

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1866

  • 问题内容: 基本上,这就是我要实现的目标。 classname @ address(?)[原始],对象的名称,对象的年龄 问题,被递归调用。 我不能打电话,因为那不是我想要的。我想叫原件。 这个 由于明显的原因而无法正常工作。 我已经精疲力竭了,一旦方法被重写,可以做到这一点吗?即所谓的原始实现? (我的编辑)基本上,我需要的是:覆盖toString以显示’this’对象的两个属性,并且我也想让’

  • 问题内容: 鉴于Python文档为: 您可以在子类中重写此方法。标准的run()方法调用传递到对象构造函数的可调用对象作为目标参数(如果有),并分别从args和kwargs参数中获取顺序和关键字参数。 我构造了以下代码: 但是当我执行它时,出现以下错误: 似乎我缺少明显的东西,但是我看到的各种示例都可以使用此方法。最终,我尝试将字符串和字典传递给线程,如果构造方法不是正确的方法,而是在启动线程之前

  • Apache 提供了基于正则表达式规则动态修改传入的请求的 URL 的方法。这用于以自己喜欢的任意方法映射任意 URL 到你的内部 URL 结构。 它支持无限的规则,以及为每个规则附加条件,从而提供了一个真正灵活且强大的 URL 操作机制。URL 操作可以依赖于各种测试,例如服务器变量,环境变量,HTTP 头,时戳,甚至外部数据库查询等,以便完成 URL 单元匹配。 这个模块在服务器上下文 (),