如何在内部重写url并使用GET / POST数据显示正确的内容

时间:2015-07-20 22:28:09

标签: .htaccess

我对.htaccess很新,只是在php中学习一些高级技术。我目前正在一个PHP网站上试图挑战我的技能,我正在尝试实现.htaccess重写网址为seo友好。我遇到的困难是,当用户点击语言超链接时,可用的相册'应该显示该特定语言的详细信息,我使用GET方法将用户选择发布到同一页面(专辑)。如果最好的话,我可以为每种语言设置单独的页面。顺便说一句,我用Justhost托管我的网站。

正常方法:

www.site.co.uk/albums - **page** 

<li > <a href="albums.php?selection=tamil/">  TAMIL </a> </li> - **hyperlink** 
<li> <a href="/albums.php?selection=tamil&cat=featured" >Featured </a></li>  

结果:显示泰米尔语专辑内容......这很好......

我想为SEO做些什么,

www.site.co.uk/albums.php?selection=language  **URL to be rewritten**
www.site.co.uk/albums/tamil/    ->>> **Expected result** 

<li > <a href="albums/tamil/"> TAMIL </a> </li> - HTML CODE in album page

我想使用&#39; /&#39;如果可能,在分离的URL中。当我点击“TAMIL”时,我收到404错误。超链接。 (自定义错误页面)。

请查看我目前正在使用的.htaccess。

 #Use PHP5.4 as default
 AddHandler application/x-httpd-php54 .php


 RewriteBase /

 # Prevent Directoy listing 
 Options -Indexes

 RewriteEngine On
 # For security reasons, Option followsymlinks cannot be overridden.
 #Options +FollowSymLinks
 Options +SymLinksIfOwnerMatch


 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^([^\.]+)$ $1.php [NC,L]


 # Specify search friendly URLs
 RewriteRule ^albums/(.*)/$  albums.php?selection=$1


 ErrorDocument 400  /error.php?code=400
 ErrorDocument 401  /error.php?code=401
 ErrorDocument 403  /error.php?code=403
 ErrorDocument 404  /error.php?code=404
 ErrorDocument 500  /error.php?code=500

我真的很感激,你的建议,建议和意见,我希望我能清楚地知道我打算做什么。 非常感谢所有人..

1 个答案:

答案 0 :(得分:0)

您需要重新安排规则。将首先应用相册上方的规则。尝试:

 #Use PHP5.4 as default
 AddHandler application/x-httpd-php54 .php


 RewriteBase /

 # Prevent Directoy listing 
 Options -Indexes

 RewriteEngine On
 # For security reasons, Option followsymlinks cannot be overridden.
 #Options +FollowSymLinks
 Options +SymLinksIfOwnerMatch

 # Specify search friendly URLs
 RewriteRule ^albums/(.+)/$  albums.php?selection=$1 [L,QSA]

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^([^\.]+)$ $1.php [NC,L]

 ErrorDocument 400  /error.php?code=400
 ErrorDocument 401  /error.php?code=401
 ErrorDocument 403  /error.php?code=403
 ErrorDocument 404  /error.php?code=404
 ErrorDocument 500  /error.php?code=500