2016-12-06 88 views
0

所以我有“好”的网址:的.htaccess:背后漂亮的搜索引擎友好的URL隐藏php文件

RewriteRule ^(.*)/$ page.php?data=$1 [L] 

的问题是,page.php取,site.com/page.php?data=xxx将显示site.com/xxx/

重复的内容我想防止,但如果我做任何RedirectRewriteRule即使在漂亮的网址RewriteRule之前,它会影响/使文件无法访问,即使在漂亮的url后面。

有什么办法吗?

我可以将page.php更改为罕见的文件名,并在发现并发布的情况下,添加html canonical urls,但我想正确地做。

+0

尝试寻找到PHP路由系统,或一般的PHP框架,像laravel – Grey

回答

1

你的第一个RewriteCond前补充一点:

# external redirect from actual URL to pretty one 
RewriteCond %{THE_REQUEST} \s/+page\.php\?data=([^\s&]+) [NC] 
RewriteRule^/%1/? [R=301,L,NE] 
+0

好吧,我不希望这个重定向到URL不错,我想“隐藏”这些文件,加上我有一些不同的漂亮的网址,这将是一个不必要的大文件。 战斗过一会儿之后我得到了这个工作:。 '的RewriteCond%{} THE_REQUEST^* \ PHP [NC] 重写规则^ 404.html [R = 302,L]' 但是我有一个非常小问题,它维护任何GET数据,所有后?。没有太大的问题,但我怎样才能使它成为一个干净的404.hml网址? – Vixxs

+0

明白了。我遇到了困难,因为我正在研究一个子文件夹,我不知道在哪里添加它。 'RewriteCond%{THE_REQUEST} \ s/page \ .php [NC] RewriteRule^404.html? [R = 302,L]' – Vixxs

+0

@Vixxs不要外部重定向到404,内部重写并在404文件中设置状态标题。 – Walf