Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I just configured my VPS, I am using Centos, everything works fine, but if I am setting my permalinks to Custom Structure, then accept the homepage none of the posts come, it shows me 404 page, I think this is because I haven't enabled curl, but I don't know where is my php.ini file in my centos?

OK my curl is enabled, I checked it through phpinfo(); Here is the URL http://74.117.158.182/info.php

But if I am setting any permalinks in my wordpress then accept home page, all are giving me 404 pages You can check it on this URL http://mbas.co.in

If I am keeping the permalink as default then pages are loaded without any 404

I don't know what is the problem, more-over my post-content is not getting loaded, Only the posts title comes, but the content part is missing,

MY APACHE ERROR LOG

[Tue Feb 01 15:22:47 2011] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Feb 01 15:22:47 2011] [notice] Digest: generating secret for digest authentication ...
[Tue Feb 01 15:22:47 2011] [notice] Digest: done
[Tue Feb 01 15:22:47 2011] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Tue Feb 01 15:22:51 2011] [error] [client 95.168.183.226] File does not exist: /var/www/html/web-hosting-concerns-for-ecommerce-businesses, referer: mysite.com
[Tue Feb 01 15:23:30 2011] [error] [client 38.101.148.126] File does not exist: /var/www/html/cpcu-vs-mba
[Tue Feb 01 15:23:35 2011] [error] [client 66.77.240.125] File does not exist: /var/www/html/can-u-see-below-for-growing-opinions-on-write-in-vote-process-in-sa

[Tue Feb 01 15:23:43 2011] [error] [client 38.101.148.126] File does not exist: /var/www/html/dc-area-financial-strategist-questions-lack-of-regulation-for-tv-financial-gurus

[Tue Feb 01 15:24:15 2011] [error] [client 38.101.148.126] File does not exist: /var/www/html/is-a-political-science-degree-with-a-business-admin-minor-a-good-idea-feature-jobs-with-that-combo

[Tue Feb 01 15:26:01 2011] [error] [client 66.249.71.225] File does not exist: /var/www/html/emba-ralph-irizarry-timbalista-de-ruben-blades

My htaccess file

# BEGIN W3TC Page Cache
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTP_USER_AGENT} (2\.0\ mmp|240x320|alcatel|amoi|asus|au\-mic|audiovox|avantgo|benq|bird|blackberry|blazer|cdm|cellphone|danger|ddipocket|docomo|dopod|elaine/3\.0|ericsson|eudoraweb|fly|haier|hiptop|hp\.ipaq|htc|huawei|i\-mobile|iemobile|j\-phone|kddi|konka|kwc|kyocera/wx310k|lenovo|lg|lg/u990|lge\ vx|midp|midp\-2\.0|mmef20|mmp|mobilephone|mot\-v|motorola|netfront|newgen|newt|nintendo\ ds|nintendo\ wii|nitro|nokia|novarra|o2|openweb|opera\ mobi|opera\.mobi|palm|panasonic|pantech|pdxgw|pg|philips|phone|playstation\ portable|portalmmm|ppc|proxinet|psp|pt|qtek|sagem|samsung|sanyo|sch|sec|sendo|sgh|sharp|sharp\-tq\-gx10|small|smartphone|softbank|sonyericsson|sph|symbian|symbian\ os|symbianos|toshiba|treo|ts21i\-10|up\.browser|up\.link|uts|vertu|vodafone|wap|willcome|windows\ ce|windows\.ce|winwap|xda|zte) [NC]
    RewriteRule .* - [E=W3TC_UA:_low]
    RewriteCond %{HTTP_USER_AGENT} (acer\ s100|android|archos5|blackberry9500|blackberry9530|blackberry9550|cupcake|docomo\ ht\-03a|dream|htc\ hero|htc\ magic|htc_dream|htc_magic|incognito|ipad|iphone|ipod|lg\-gw620|liquid\ build|maemo|mot\-mb200|mot\-mb300|nexus\ one|opera\ mini|samsung\-s8000|series60.*webkit|series60/5\.0|sonyericssone10|sonyericssonu20|sonyericssonx10|t\-mobile\ mytouch\ 3g|t\-mobile\ opal|tattoo|webmate|webos) [NC]
    RewriteRule .* - [E=W3TC_UA:_high]
    RewriteCond %{HTTPS} =on
    RewriteRule .* - [E=W3TC_SSL:_ssl]
    RewriteCond %{SERVER_PORT} =443
    RewriteRule .* - [E=W3TC_SSL:_ssl]
    RewriteCond %{HTTP:Accept-Encoding} gzip
    RewriteRule .* - [E=W3TC_ENC:.gzip]
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{QUERY_STRING} =""
    RewriteCond %{REQUEST_URI} \/$
    RewriteCond %{REQUEST_URI} !(\/wp-admin\/|\/xmlrpc.php|\/wp-(app|cron|login|register|mail)\.php|wp-.*\.php|index\.php) [NC,OR]
    RewriteCond %{REQUEST_URI} (wp\-comments\-popup\.php|wp\-links\-opml\.php|wp\-locations\.php) [NC]
    RewriteCond %{HTTP_COOKIE} !(comment_author|wp\-postpass|wordpress_\[a\-f0\-9\]\+|wordpress_logged_in) [NC]
    RewriteCond "/var/www/html/wp-content/w3tc/pgcache/$1/_index%{ENV:W3TC_UA}%{ENV:W3TC_SSL}.html%{ENV:W3TC_ENC}" -f
    RewriteRule (.*) "/wp-content/w3tc/pgcache/$1/_index%{ENV:W3TC_UA}%{ENV:W3TC_SSL}.html%{ENV:W3TC_ENC}" [L]
</IfModule>
# END W3TC Page Cache

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^index\.php/?(.*)$ $1 [R] 
</IfModule>

# END WordPress

The only solution I found was reinstalling the entire Centos, starting all from scratch, and enabling each thing respectively as per the answers, and finally it worked, my Linux was having some problems, thats why it was not working.

share|improve this question
    
@ntechi - It's very hard to follow your question. Please consider giving more detail, examples of URLs, screenshots if possible, etc. –  MikeSchinkel Feb 2 '11 at 9:56
    
The php.ini should be in /etc/php.ini but i'm not sure if that is your problem. do you have a .htaccess file configured? –  Bainternet Feb 2 '11 at 9:58
    
@MikeSchinkel, @בניית אתרים Check my question now –  ntechi Feb 2 '11 at 10:18
2  
You must have mod_rewrite enabled in the server. Your .htaccess must be enabled, must have the content that is explained on Wordpress page that I've send to you. Finally you can remove the index.php in custom permalink structure. The two basic question are: mod_rewrite is enabled in apache? .htaccess is enabled ? –  keatch Feb 2 '11 at 11:41
1  
@MikeSchinkel - Done! See my answer below –  keatch Feb 3 '11 at 10:31

4 Answers 4

up vote 2 down vote accepted
+25

You need to add: Options +FollowSymLinks

It's often but not always enabled in most hosting environments. We have a server that has it off by default for PCI compliance.

share|improve this answer
    
I have added this, still no change –  ntechi Feb 10 '11 at 7:29
1  
@ntechi: After this has been set -- Have you have flushed the Worpress permalinks by going to Settings -> Permalinks? –  Ethan Seifert Feb 10 '11 at 17:14
    
yes done, still no change –  ntechi Feb 11 '11 at 4:39
    
@ntechi: I tweaked your .htaccess file for my local Wordpress copy and couldn't get it working. Why don't you archive your current .htacess file, turn off your caching plugin and use the standard wordpress .htaccess and see if it works in this easy case. –  Ethan Seifert Feb 11 '11 at 18:25

If you enable custom permalinks, wordpress is modifying your .htaccess file, to enable the rewrite of your urls.

As from the from the Codex section Using Permalinks, in your server must be enabled the module "mod_rewrite" (if you are using apache) and the use of .htaccess by the domain in which your blog is installed. Both can be disabled by the administrator, so first check with him.

To enable mod_rewrite for apache, the better way is to enable it via the a2enmod command that come bundled with the majority of linux distribuition.

a2enmod rewrite

and then, reload your apache server, to enable the modification.

Note: If you can't enable mod_rewrite or .htaccess, the best solution for your permalinks, is to enable the "Almost Pretty" version, i.e, prepend index.php/ to you permalink structure in the custom field.

share|improve this answer
    
I have enabled mod_rewrite, but still without index.php the permalinks are not working Please give me a solution of this, I am really in a mess –  ntechi Feb 3 '11 at 12:26
    
Check your apache error logs? What are they saying? Also be sure that the Custom permalink is %category%/%postname%. –  keatch Feb 3 '11 at 14:21
    
check my question for error log, I have changed the permalink as you said, but still I am getting same error –  ntechi Feb 4 '11 at 4:50
    
Which versione of W3C Cache are you using , and /var/www/html is writable by your webserver ? –  keatch Feb 4 '11 at 16:37
    
I am using the latest version of W3C Cache, html directory is not writable but the important files inside it, like htaccess, db.php w3c-advanced.php are 777 and wp-content folder is 755 –  ntechi Feb 5 '11 at 4:36

It could be that APACHE AllowOveride is not correctly set.

Does your .htaccess look anything like this?

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
share|improve this answer
    
I dont know about this, but while searching I found something, should I enable all the following things? AuthConfig, FileInfo, Indexes, Limit, Options ? –  ntechi Feb 4 '11 at 6:11
    
Your webmaster or hosting provider should know how to do this. I had this problem with one client that used a hosting provider that had it turned off. Just had to contact them and have them turn it on. –  Jo Albright Feb 4 '11 at 6:13
    
@Jo Albright I am only configuring it, I recently shifted my wordpress website to new unmanaged VPS, This was set already <Directory /> Options FollowSymLinks AllowOverride All </Directory> but don't know about others –  ntechi Feb 4 '11 at 6:28
    
Your .htaccess should be working then... check to make sure it looks something like what I have added to my answer. –  Jo Albright Feb 4 '11 at 6:29
    
@Jo Albright Check my htaccess file –  ntechi Feb 4 '11 at 6:38

This is almost certainly a rewriting issue - either mod_rewrite isn't being loaded, or your .htaccess file isn't allowed to override your httpd.conf

  1. Make sure mod_rewrite is being loaded - you'll need to check /etc/httpd/conf/httpd.conf and look for a line like: LoadModule rewrite_module modules/mod_rewrite.so. Make sure this line isn't being commented out.

  2. If you've create a virtual host, then make sure you're allowing .htaccess overrides within the section - something like ` AllowOverride All . If you're not using a virtual host, then follow the Override chain in your httpd.conf to make sure that the directory WP is located in can be overridden

  3. Disable w3 total cache (and delete the lines it adds to .htaccess) until you've sorted out your rewriting issue. It just confuses things, and given your site isn't working, caching is the least of your worries.

  4. Check your apache error logs /var/log/httpd and see what they say.

share|improve this answer
    
all the four steps are done, still same –  ntechi Feb 10 '11 at 15:51
    
what did your error logs say? pretend that WordPress doesn't exist on your site, and just see if you can make a single rewrite rule work - add it in your httpd.conf if necessary, and bypass .htaccess completely. once you've actually proved that rewrite is working, you can then check overrides in .htaccess. –  anu Feb 10 '11 at 16:13
    
i'm also wondering if this question shouldnt be migrated to serverfault or webmasters. –  anu Feb 10 '11 at 16:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.