htaccess URL 重写页面.php?页面


htaccess URL rewrite page.php?page

我需要解决方案。需要重写两个网址:

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

/onama    
/pravila

我尝试了许多不同的解决方案,但没有一个有效。但是,我确实像我说的那样重写了这些URL,但是我的页面没有打开,所以我想这一切都在细节中。

对于提示:

  • page.php 文件位于根目录中 - 它充满了 if-else 语句,其中包括从/pages/目录到 page.php 文件中的其他.php文件

  • Onama.php 和 Pravila.php 文件位于/pages/目录中

编辑:

我想我很幸运:)再试一次,它奏效了,我不是 .htaccess 规则的专家,但这是我问题的解决方案:

    RewriteCond %{QUERY_STRING} ^page=([^&''s]+)$    重写规则 ^(?:p age''.php|)$/%1?[R=301,L]    RewriteCond %{QUERY_STRING} ^page=([^&''s]+)&page=([^&''s]+)$    重写规则 ^(?:p age''.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 有问题 - 给了我一个空白页。

当规则 2 首先出现在.htaccess文件中时,规则 1 不起作用 - 给我 404 页。

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

我的访问文件:

# 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
RewriteEngine On
RewriteRule ^pravila$  "/page.php?page=pravila"
RewriteRule ^onama$    "/page.php?page=onama"

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